hasattr()
ist die richtige Antwort. Was ich hinzufügen möchte, ist, dass hasattr()
kann auch gut in Verbindung verwendet werden mit behaupten. (zur Vermeidung unnötiger if
Anweisungen und machen den Code besser lesbar):
assert hasattr(a, 'property'), 'object lacks property'
print(a.property)
Falls die Eigenschaft fehlt, wird das Programm mit einer AssertionError
und den Ausdruck der bereitgestellten Fehlermeldung ( object lacks property
in diesem Fall).
Wie in einem anderen Artikel erwähnt Antwort auf SO :
Asserts sollten verwendet werden, um Bedingungen zu testen, die niemals eintreten sollten. Der Zweck ist, im Falle eines beschädigten Programmzustandes frühzeitig abzustürzen.
Dies ist häufig der Fall, wenn eine Eigenschaft fehlt und dann assert
ist sehr angemessen.
0 Stimmen
Wenn Sie sagen "feststellen, ob a die Eigenschaft attribut hat, bevor man es benutzt?" wollen Sie eine Funktion, die einen booleschen Wert zurückgibt (wie
hasattr()
zurückgibt) oder ist es in Ordnung, eineAttributeError
Ausnahme?4 Stimmen
Nennen Sie Ihr Attribut auch nicht wirklich 'Eigenschaft', denn Python hat
property
Dekorateur und eingebauter und diese sind etwas anders als normale Attribute/Methoden.