なぜ私はPythonでインスタンス.__ class__属性にアクセスすることはできませんか?
-
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
所属していません StackOverflow