Existiert ein Attribut?

01/10/2009 - 14:32 von Ole Streicher | Report spam
Hallo,

ich möchte gerne die Antwort auf das Subject für ein bestimmtes Objekt
herausfinden :-)

t.m.: Ich habe ein Python-Objekt und möchte gerne wissen, ob es ein
bestimmtes Attribut besitzt. Wie mache ich das am effektivsten?

Die einfachste Variante ist

try:
myobjekt.myattribute
do_if_attribute_exists()
except AttributeError:
do_if_no_attribute()

aber das sieht (wieder mal) nicht sehr elegant aus.

Wie gehts besser?

Viele Grüße

Ole
 

Lesen sie die antworten

#1 Stefan Behnel
01/10/2009 - 15:47 | Warnen spam
Ole Streicher schrieb:
Hallo,

ich möchte gerne die Antwort auf das Subject für ein bestimmtes Objekt
herausfinden :-)

t.m.: Ich habe ein Python-Objekt und möchte gerne wissen, ob es ein
bestimmtes Attribut besitzt. Wie mache ich das am effektivsten?

Die einfachste Variante ist

try:
myobjekt.myattribute
do_if_attribute_exists()
except AttributeError:
do_if_no_attribute()



Bei solchen Dingen ist Vorsicht geboten. Wenn im Aufruf von
do_if_attribute_exists() zufàllig irgendwo ein AttributeError fliegt, wird
anschließend (wahrscheinlich ungewollt) do_if_no_attribute() aufgerufen,
anstatt dich auf den Fehler aufmerksam zu machen.

Besser ist:

try:
myobjekt.myattribute
except AttributeError:
do_if_no_attribute()
else:
do_if_attribute_exists()


aber das sieht (wieder mal) nicht sehr elegant aus.

Wie gehts besser?



hasattr() ?

Stefan

Ähnliche fragen