Eine get () -ähnliche Methode zum Überprüfen auf Python-Attribute


78

Wenn ich ein Wörterbuch hätte dictund prüfen wollte, ob dict['key']ich dies tun könnte, könnte ich dies entweder in einem tryBlock tun (bleh!) Oder die get()Methode mit Falseals Standardwert verwenden.

Ich würde gerne das Gleiche für tun object.attribute. Das heißt, ich habe bereits ein Objekt, das zurückgegeben werden soll, Falsewenn es nicht festgelegt wurde, aber das gibt mir Fehler wie

AttributeError: Das Objekt 'bool' hat kein Attribut 'attribute'.

Antworten:


124

Ein direkteres Analogon zu dict.get(key, default)als es hasattrist getattr.

val = getattr(obj, 'attr_to_check', default_value)

(Wo default_valueoptional, wird eine Ausnahme für kein Attribut ausgelöst, wenn sie nicht gefunden wird.)

Für Ihr Beispiel würden Sie bestehen False.



7

Um zu überprüfen, ob sich ein Schlüssel in einem Wörterbuch befindet, können Sie Folgendes verwenden in: 'key' in dictionary.

Verwenden Sie zum Überprüfen auf Attribute im Objekt die hasattr()Funktion:hasattr(obj, 'attribute')


Nur eine Antwort, die die Tatsache anspricht, dass beide Optionen zur Überprüfung eines von OP vorgelegten Diktats Bleh sind!
Mad Physicist
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.