Comprendre et utiliser Getattr() en Python
Bien que vous ayez peut-être rencontré la fonction getattr, comprendre son véritable objectif peut être insaisissable. Au-delà de sa capacité à refléter li.pop sous la forme getattr(li, "pop"), une compréhension plus approfondie de getattr est cruciale.
Quand et comment utiliser Getattr()
Les objets Python possèdent des attributs, notamment des propriétés de données et de fonctions. L'accès à ces attributs implique généralement person.name ou person.the_method(). Cependant, il arrive parfois que le nom de l'attribut soit inconnu jusqu'à l'exécution. C'est là que getattr brille.
Considérez une variable attr_name stockant le nom d'un attribut (par exemple, « sexe »). Au lieu de person.gender, nous pouvons utiliser getattr(person, attr_name) pour accéder à l'attribut.
Exemple :
attr_name = 'name' person = Person() getattr(person, attr_name)
Gestion de l'absence d'attribut
Getattr déclenche une AttributeError lorsque l'attribut spécifié est absent. Pour atténuer cela, fournissez une valeur par défaut comme troisième argument, qui sera renvoyée si l'attribut n'est pas trouvé.
getattr(person, 'age', 0)
Itération des attributs à l'aide de Getattr()
Combinez getattr avec dir pour parcourir tous les noms d'attributs et récupérer leur valeurs.
for attr_name in dir(obj): attr_value = getattr(obj, attr_name)
Application pratique : recherche et appel de méthodes commençant par Test
for attr_name in dir(obj): if attr_name.startswith('test'): getattr(obj, attr_name)()
Conclusion
Getattr permet de récupérer un attribut via son nom, même inconnu lors du codage. Sa polyvalence s'étend à l'extraction de valeurs d'attribut, à la gestion de l'absence d'attribut et à l'identification et à l'appel de méthodes avec des conventions de dénomination spécifiques. Exploitez la puissance de getattr pour la manipulation dynamique des attributs dans votre programmation Python.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!