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'.

jamtoday
quelle

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.

Brian
quelle
19

Meinst du hasattr()vielleicht?

hasattr(object, "attribute name") #Returns True or False

Python.org doc - Eingebaute Funktionen - hasattr ()

Sie können dies auch tun, was etwas unübersichtlicher ist und für Methoden nicht funktioniert.

"attribute" in obj.__dict__
Zoomulator
quelle
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')


quelle
Nur eine Antwort, die die Tatsache anspricht, dass beide Optionen zur Überprüfung eines von OP vorgelegten Diktats Bleh sind!
Mad Physicist