Warum kann ich nicht auf die Instanz .__ class__ Attribut in Python?
-
26-09-2019 - |
Frage
Ich bin neu in Python, und ich weiß, ich muss etwas ziemlich einfach fehlt, aber warum nicht diese sehr, sehr einfachen Code Arbeit?
class myClass:
pass
testObject = myClass
print testObject.__class__
ich die folgende Fehlermeldung erhalten:
AttributeError: class myClass has no attribute '__class__'
nicht jedes Objekt in Python hat ein __class__
Attribut?
Lösung
Ich denke, dass ich meinen Fehler erkennen. Ich dachte, dass der Code testObject = myClass
wurde eine neue Instanz / Objekt der Klasse zu schaffen, aber es war eigentlich ein Verweis auf die Klasse selbst zuweisen. Ich änderte den Code an:
class myClass:
pass
testObject = myClass()
print testObject.__class__
und es funktioniert jetzt wie ich es erwartet hatte
Andere Tipps
Die meisten, aber nicht alle Objekte in Python haben ein __class__
Attribut. Sie können es in der Regel Zugriff auf die Klasse eines Objekts zu bestimmen.
Sie können die Klasse erhalten jeder Objekt durch type
darauf aufrufen.
>>> class myClass:
... pass
...
>>> testObject = myClass
>>> type(testObject)
<type 'classobj'>
Old-Style-Klassen haben keinen __class__
Attribut.
class myClass(object):
pass