92 votes

Une méthode similaire à get() pour vérifier les attributs Python

Si j'avais un dictionnaire dict et j'ai voulu vérifier la présence de dict['key'] Je pourrais soit le faire dans un try (bleh !) ou utiliser le bloc get() méthode, avec False comme valeur par défaut.

J'aimerais faire la même chose pour object.attribute . C'est-à-dire que j'ai déjà un objet à renvoyer False s'il n'a pas été défini, mais cela me donne des erreurs du type

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

143voto

Brian Points 48423

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

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

(Où default_value est facultatif et soulève une exception si aucun attribut n'est trouvé).

Dans votre exemple, vous passeriez False .

21voto

Zoomulator Points 7692

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

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

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

Vous pouvez également procéder ainsi, ce qui est un peu plus encombrant et ne fonctionne pas pour les méthodes.

"attribute" in obj.__dict__

7voto

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

Pour vérifier la présence d'attributs dans un objet, utilisez la fonction hasattr() fonction : hasattr(obj, 'attribute')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X