HASATTR |
Attribué du haché |
---|---|
Python |
Syntaxe
hasattr(objet,nom) |
Paramètres
Nom | Description |
---|---|
objet | Ce paramètre optionnel permet d'indiquer un objet à utiliser |
nom | Ce paramètre optionnel permet d'indiquer le nom à vérifier |
Description
Cette fonction permet d'indiquer si le nom est un attribut de l'objet.
Algorithme
MODULE HASATTR(objet, nom_attribut) * Vérifier si l'objet est valide SI objet est nul ALORS RETOURNE False FIN SI * Vérifier si l'attribut existe dans l'objet ESSAYER * Essayer d'accéder à l'attribut de l'objet valeur ← accéder à objet[nom_attribut] * Si l'attribut existe, retourner True RETOURNE True SAUF AttributeError: * Si une exception AttributeError est levée, l'attribut n'existe pas RETOURNE False FIN ESSAYER |
Remarques
- La fonction hasattr(objet, nom) permet de vérifier si un objet possède un attribut spécifique. Le second paramètre, nom, est une chaîne de caractères représentant le nom de l'attribut à tester. Cela permet d'écrire du code conditionnel robuste, qui s'adapte en fonction de la structure réelle des objets.
- L'intérêt principal de hasattr() est d'éviter les erreurs AttributeError lors d'un accès à un attribut incertain. Avant d'accéder à un attribut avec getattr() ou directement via objet.attribut, il est judicieux d'utiliser hasattr() pour s'assurer que l'attribut existe bien.
- Le nom d'attribut passé en paramètre est une chaîne, ce qui permet une vérification dynamique. Par exemple, on peut stocker les noms d'attributs dans une liste ou les générer à la volée, puis les vérifier avec hasattr() selon le contexte d'exécution du programme.
- La fonction hasattr() appelle en interne la méthode spéciale __getattr__() ou __getattribute__() de l'objet, ce qui peut déclencher du code personnalisé. Il faut donc faire attention, car même une simple vérification peut avoir des effets secondaires si ces méthodes sont redéfinies dans la classe.
- hasattr() est très utile dans les cas de polymorphisme ou d'héritage, lorsqu'on travaille avec des objets dont les attributs peuvent varier selon les classes. Elle permet d'écrire du code générique qui s'adapte automatiquement aux différentes implémentations d'un même concept.
- Cette fonction est souvent utilisée dans des scripts de traitement de données, d'analyse de structures, ou d'inspection d'objets comme les modules, les classes, ou même des objets importés depuis des bibliothèques externes. Elle évite ainsi les erreurs inattendues dues à des attributs manquants.
- Même si hasattr() semble simple, elle joue un rôle clé dans la programmation dynamique et introspective en Python. Elle s'inscrit dans la philosophie de Python préférant vérifier la présence d'un attribut plutôt que de forcer l'utilisation d'interfaces strictes comme dans d'autres langages.
- Il faut éviter d'utiliser hasattr() de manière abusive dans des boucles ou sur des objets complexes, car cela peut impacter les performances, surtout si les méthodes d'accès à l'attribut contiennent du code lourd. Une bonne pratique est de l'utiliser de manière ciblée dans des blocs de vérification.
Dernière mise à jour : Mercredi, le 14 septembre 2016