Fonction getattr() en Python
Fonctions intégrées de Python3
getattr()C'est une fonction intégrée en Python utilisée pour obtenir les valeurs d'attribut d'un objet.
getattr()Cela permet d'accéder dynamiquement aux attributs d'un objet plutôt que d'utiliser la notation pointée (.) pour un accès statique. C'est très utile lorsqu'on traite des attributs inconnus.
Définitions de mots: getattr 是 get attribute(获取属性)的缩写。
Syntaxe de base et paramètres
Format de syntaxe
getattr(object, name) getattr(object, name, default)
Description du paramètre
- Paramètre object:
- Type : Tout objet
- Description : L'objet dont l'attribut doit être obtenu.
- Nom du paramètre:
- Type : String
- Description : Nom de l'attribut.
- Paramètre default(facultatif) :
- Type : Toute valeur
- Description : La valeur par défaut renvoyée si l'attribut n'existe pas.
Description de la fonction
- Valeur de retour: Renvoie la valeur de l'attribut.
- Exceptions: Si l'attribut n'existe pas et qu'aucune valeur par défaut n'est fournie, une AttributeError sera levée.
Exemples
Exemple 1 : Utilisation de base
Exemple
class Person:
def __init__(self):
self.name = "Tom"
self.age = 20
p = Person()
# Obtenir l'attribut
print(getattr(p, "name")) # Sortie: Tom
print(getattr(p, "age")) # Sortie: 20
# Utilisation de la notation pointée
print(p.name) # Sortie: Tom
def __init__(self):
self.name = "Tom"
self.age = 20
p = Person()
# Obtenir l'attribut
print(getattr(p, "name")) # Sortie: Tom
print(getattr(p, "age")) # Sortie: 20
# Utilisation de la notation pointée
print(p.name) # Sortie: Tom
Sortie attendue :
Tom 20 Tom
Explication du code :
- getattr() et l'accès par notation pointée ont le même effet.
- L'avantage de getattr() est que vous pouvez spécifier le nom de l'attribut avec une chaîne de caractères.
Exemple 2 : Utilisation d'une valeur par défaut
Exemple
class Person:
def __init__(self):
self.name = "Tom"
p = Person()
# Récupérer un attribut existant
print(getattr(p, "name", "unknown")) # Sortie: Tom
# Récupérer un attribut inexistant (avec valeur par défaut)
print(getattr(p, "age", 0)) # Sortie: 0
print(getattr(p, "city", "Beijing")) # Sortie : Beijing
# Obtenir un attribut inexistant (sans valeur par défaut)
try:
print(getattr(p, "gender"))
except AttributeError as e:
print(f"L'attribut n'existe pas : {e}")
def __init__(self):
self.name = "Tom"
p = Person()
# Récupérer un attribut existant
print(getattr(p, "name", "unknown")) # Sortie: Tom
# Récupérer un attribut inexistant (avec valeur par défaut)
print(getattr(p, "age", 0)) # Sortie: 0
print(getattr(p, "city", "Beijing")) # Sortie : Beijing
# Obtenir un attribut inexistant (sans valeur par défaut)
try:
print(getattr(p, "gender"))
except AttributeError as e:
print(f"L'attribut n'existe pas : {e}")
Sortie attendue :
Tom 0 北京 属性不存在: 'Person' object has no attribute 'gender'
Explication du code :
- Le troisième paramètre fournit une valeur par défaut pour éviter les exceptions.
- Ceci est utile lorsqu'on traite des attributs optionnels.
Exemple 3 : Accès dynamique
Exemple
# Sélectionner dynamiquement un attribut
data = {"name": "Tom", "age": 20}
field = "name"
print(getattr(data, field)) # Accès via une chaîne
# Utilisé avec setattr
class Person:
pass
p = Person()
# Définir dynamiquement un attribut
fields = ["name", "age", "city"]
values = ["Tom", 20, "Beijing"]
for field, value in zip(fields, values):
setattr(p, field, value)
# Obtenir dynamiquement tous les attributs
for field in fields:
print(f"{field}: {getattr(p, field)}")
# hasattr combiné avec getattr
if hasattr(p, "name"):
print(f"Le nom est : {getattr(p, 'name)}")
data = {"name": "Tom", "age": 20}
field = "name"
print(getattr(data, field)) # Accès via une chaîne
# Utilisé avec setattr
class Person:
pass
p = Person()
# Définir dynamiquement un attribut
fields = ["name", "age", "city"]
values = ["Tom", 20, "Beijing"]
for field, value in zip(fields, values):
setattr(p, field, value)
# Obtenir dynamiquement tous les attributs
for field in fields:
print(f"{field}: {getattr(p, field)}")
# hasattr combiné avec getattr
if hasattr(p, "name"):
print(f"Le nom est : {getattr(p, 'name)}")
Sortie :
L'exécution dans un environnement réel affichera l'attribut défini dynamiquement.
getattr()C'est une fonction très importante dans la programmation dynamique en Python.
Fonctions intégrées de Python3
Autres extensions