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?

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top