なぜ私はPythonでインスタンス.__ class__属性にアクセスすることはできませんか?

StackOverflow https://stackoverflow.com/questions/2835558

  •  26-09-2019
  •  | 
  •  

質問

私はPythonに新たなんだ、と私は私が何か非常に単純に欠けする必要があります知っているが、なぜこの非常に、非常に簡単なコードに動作しますか?

class myClass:
    pass

testObject = myClass
print testObject.__class__

私は次のエラーを取得します

AttributeError: class myClass has no attribute '__class__'

はPythonですべてのオブジェクトは、

__class__属性がありません
役に立ちましたか?

解決

私は、私は私のミスを実現だと思います。私は、コードtestObject = myClassは、クラスの新しいインスタンス/オブジェクトを作成したと考え、実際には、クラス自体への参照を割り当てました。私は、コードを変更します:

class myClass: 
    pass 

testObject = myClass() 
print testObject.__class__ 
私は期待していたとして

は、それが機能するようになりました。

他のヒント

ほとんど、すべてではありませんが、Pythonでオブジェクトが__class__属性を持っています。通常は、オブジェクトのクラスを決定するためにそれにアクセスすることができます。

あなたがそれにtypeを呼び出すことによって、のいずれかののオブジェクトのクラスを取得することができます。

>>> class myClass:
...     pass
... 
>>> testObject = myClass
>>> type(testObject)
<type 'classobj'>

古いスタイルのクラスは__class__属性がありません。

class myClass(object):
    pass
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top