Fonction getattr() en Python

Python3 内置函数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

Sortie attendue :

Tom
20
Tom

Explication du code :

  1. getattr() et l'accès par notation pointée ont le même effet.
  2. 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}")

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)}")

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.


Python3 内置函数Fonctions intégrées de Python3


Autres extensions