web-dev-qa-db-fra.com

Une méthode de type get () pour vérifier les attributs Python

Si j'avais un dictionnaire dict et que je voulais vérifier dict['key'] Je pouvais le faire dans un bloc try (bleh!) Ou utiliser la fonction get() méthode, avec False comme valeur par défaut.

Je voudrais faire la même chose pour object.attribute. Autrement dit, j'ai déjà un objet pour retourner False s'il n'a pas été défini, mais cela me donne des erreurs comme

AttributeError: l'objet 'bool' n'a pas d'attribut 'attribute'

68
jamtoday

Un analogue plus direct de dict.get(key, default) que hasattr est getattr.

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

(Où default_value est facultatif, levant une exception sur aucun attribut s'il n'est pas trouvé.)

Pour votre exemple, vous passeriez False.

109
Brian

Voulez-vous dire hasattr() peut-être?

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

doc Python.org - Fonctions intégrées - hasattr ()

Vous pouvez également le faire, ce qui est un peu plus encombré et ne fonctionne pas pour les méthodes.

"attribute" in obj.__dict__
18
Zoomulator

Pour vérifier si une clé se trouve dans un dictionnaire, vous pouvez utiliser in: 'key' in dictionary.

Pour vérifier les attributs dans l'objet, utilisez la fonction hasattr(): hasattr(obj, 'attribute')

7
unbeknown