Zur Laufzeit Referenzen auf Klassen erstellen

02/01/2009 - 21:04 von Patrick Scharrenberg | Report spam
Hi!

Kann ich zur Laufzeit Referenzen auf Klassen erhalten, àhnlich wie ich
mittels "getattr" referenzen auf Objekte erhalten kann?
Ich koennte mir vorstellen, dass das ebenfalls mit "getattr" geht,
jedoch fehlt mir das Objekt, über welches ich die Klassen referenzieren
kann.

Wenn ich eine Klasse "MeineKlasse" definiert habe, würde ich gerne mit
etwas aehnlichem wie
a=getattr(einBestimmtesObjekt, "MeineKlasse")
eine Referenz auf MeineKlasse erhalten.

Geht das irgendwie?

Schoene Gruesse
Patrick
 

Lesen sie die antworten

#1 Wolfgang Strobl
02/01/2009 - 21:38 | Warnen spam
Patrick Scharrenberg :

Wenn ich eine Klasse "MeineKlasse" definiert habe, würde ich gerne mit
etwas aehnlichem wie
a=getattr(einBestimmtesObjekt, "MeineKlasse")
eine Referenz auf MeineKlasse erhalten.



Dafür gibt es das Special Attribute __class__: "The class to which a
class instance belongs". Siehe 3.12 Special Attributes in Python 2.5


class A: pass






...
a=A()
a






<__main__.A instance at 0x00A02288>
a.__class__






<class __main__.A at 0x009F5ED0>
a.__class__()






<__main__.A instance at 0x00A02260>








Wenn es eine new-style-Klasse ist, geht auch type(), also

class B(object): pass






...
type(B())






<class '__main__.B'>








Es gilt

A==A().__class__






True

und

B==type(B())






True


Wir danken für die Beachtung aller Sicherheitsbestimmungen

Ähnliche fragen