GETATTR |
Demande l'attribut |
---|---|
Python |
Syntaxe
getattr(objet) |
Paramètres
Nom | Description |
---|---|
objet | Ce paramètre optionnel permet d'indiquer un objet ou un module à analyser |
Description
Cette fonction permet de retourner la référence unique d'un objet ou d'un module.
Algorithme
MODULE GETATTR(objet, nom_attribut, valeur_par_defaut=None) * Vérifier si l'attribut existe dans l'objet SI nom_attribut est dans objet ALORS * Si l'attribut existe, retourner sa valeur RETOURNE objet[nom_attribut] SINON * Si l'attribut n'existe pas, vérifier si une valeur par défaut a été fournie SI valeur_par_defaut est non None ALORS * Si une valeur par défaut est fournie, retourner cette valeur RETOURNE valeur_par_defaut SINON * Si aucune valeur par défaut, lever une exception AttributeError Lever une exception AttributeError("L'objet n'a pas l'attribut 'nom_attribut'") FIN SI FIN SI |
Remarques
- La fonction getattr() permet d'accéder dynamiquement à un attribut d'un objet en utilisant une chaîne de caractères. C'est très pratique lorsque le nom de l'attribut est entreposé dans une variable, ce qui rend le code plus flexible et adaptable aux structures dynamiques ou modulaires.
- La syntaxe complète de getattr est en réalité getattr(objet, nom_attribut[, valeur_par_défaut]). Le paramètre objet désigne l'objet ou le module à interroger, tandis que nom_attribut est une chaîne représentant le nom de l'attribut à récupérer. Si l'attribut n'existe pas et que valeur_par_défaut n'est pas fourni, Python lève une exception AttributeError.
- L'un des usages classiques de getattr() est dans des fonctions génériques ou des cadres d'applications où les attributs à interroger ne sont pas connus à l'avance. Cela permet d'écrire du code qui interagit avec n'importe quel objet, en accédant à ses attributs de manière souple.
- En fournissant un troisième paramètre, getattr() devient plus sûr à utiliser : si l'attribut n'existe pas, la valeur par défaut est retournée au lieu de lever une erreur. Par exemple, getattr(obj, "nom", "inconnu") retournera "inconnu" si l'attribut "nom" est absent.
- getattr() peut aussi être utilisé pour interroger des modules. Cela permet de récupérer des fonctions, des classes ou des constantes à partir de leur nom, ce qui est utile pour charger des éléments dynamiquement à l'exécution, comme dans les systèmes de plugiciels ou d'extensions.
- Le fonctionnement de getattr() dépend de la méthode spéciale __getattr__() définie sur l'objet. Si l'attribut n'existe pas mais que cette méthode est présente, elle peut intercepter l'accès et fournir une valeur calculée. Cela donne une grande flexibilité pour créer des objets dynamiques.
- L'usage de getattr() facilite aussi la réflexion en Python, c'est-à-dire la capacité d'un programme à examiner ou modifier sa propre structure. Cela permet de parcourir automatiquement les attributs d'un objet sans avoir à coder chaque accès individuellement.
- Bien que puissante, la fonction getattr() doit être utilisée avec prudence. Si le nom de l'attribut vient d'une source externe (comme une entrée utilisateur), il faut s'assurer qu'il ne permet pas d'accéder à des éléments sensibles ou de contourner des règles de sécurité, car elle donne un accès direct aux données internes d'un objet.
Dernière mise à jour : Mercredi, le 14 septembre 2016