Python - Zugriff auf Objekt-Attribute, wie in einem Wörterbuch
>>> my_object.name = 'stuff'
>>> my_str = 'name'
>>> my_object[my_str] # won't work because it's not a dictionary :)
Wie kann ich den Zugriff auf die Felder von my_object
definiert my_str
?
- btw, das ist völlig gültig in javascript
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mehr auf getattr.
myobject.__dict__[my_str]
? bessere Leistung ?try:
oder fügen Sieif hasattr(
vor der Verwendunggetattr
um sicherzustellen, dass Sie nicht versuchen auf etwas, das nicht da ist.getattr
nicht eine Ausnahme, wenn das Attribut nicht existiert. Es ist im Grunde syntaktische Zucker fürif hasattr give me that else give me the default
.getattr(my_object, my_str, None)
.__slots__
und__getattr__/__getattribute__/__setattr__
überlast - und wohl auch einige andere Dinge.getattr(my_object, my_str)
ist besser für die Leistung auch ?Nicht die
__dict__
-Ansatz im Allgemeinen. Was immer funktioniert, istWenn Sie möchten, dass dict-ähnlichen Zugriff, definieren eine Klasse mit einem überladenen index-operator.
Können Sie bieten Unterstützung für die
[]
operator für Objekte der Klasse durch die Definition einer kleinen Familie von Methoden - getitem und setitem, grundsätzlich. Siehe die nächsten Einträge in die Dokumentation für einige andere zu implementieren, für die volle Unterstützung.