Fonction setattr() de Python

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


setattr()est une fonction intégrée en Python utilisée pour définir les attributs d'un objet.

Contrairement à l'utilisation directe de la notation point (.) pour l'affectation,setattr()il vous permet de définir dynamiquement les attributs d'un objet via des chaînes de caractères. C'est très utile lorsque vous devez définir des attributs en fonction de noms de variables ou gérer des attributs inconnus.

Définition du mot: setattrOuiset attributeabréviation de "définir l'attribut".


Syntaxe de base et paramètres

Format de syntaxe

setattr(obj, name, value)

Description du paramètre

  • Paramètre obj:
    • Type : Tout objet
    • Description : L'objet dont l'attribut doit être défini.
  • Nom du paramètre:
    • Type : String
    • Description : Le nom de l'attribut à définir (sous forme de chaîne).
  • Valeur du paramètre:
    • Type : Toute valeur
    • Description : La valeur à définir.

Description de la fonction

  • Valeur de retour: Aucune valeur de retour (renvoieNone)。
  • Fonction correspondante: Utilisée avecgetattr()conjointement avec la fonction,getattrutilisée pour obtenir des attributs.

Exemples

Exemple 1 : Utilisation de base

Exemple

# Créer une classe simple
class Person:
    pass

# Créer un objet
p = Person()

# Utiliser setattr pour définir des attributs
setattr(p, 'name', 'Tom')
setattr(p, 'age', 20)
setattr(p, 'city', 'Beijing')

# Vérifier que l'attribut a été défini
print(p.name)    # Sortie: Tom
print(p.age)     # Sortie : 20
print(p.city)    # Sortie : Beijing

# Utiliser getattr pour obtenir des attributs
print(getattr(p, 'name'))  # Sortie : Tom

Sortie attendue :

Tom
20
Beijing
Tom

Analyse du code :

  1. setattr(obj, 'name', 'Tom')Équivalent àobj.name = 'Tom'。
  2. Le nom de l'attribut est passé sous forme de chaîne, ce qui permet une définition dynamique.
  3. Peut être utilisé avecgetattr()ensemble.

Exemple 2 : Définition dynamique d'attributs

Exemple

class Student:
    pass

# Définir dynamiquement plusieurs attributs
student = Student()
fields = ['name', 'age', 'grade', 'school']
values = ['Lily', 18, 'A', 'MIT']

for field, value in zip(fields, values):
    setattr(student, field, value)

# Afficher tous les attributs
for field in fields:
    print(f"{field}: {getattr(student, field)}")

# Définir un attribut inexistant
setattr(student, 'major', 'Computer Science')
print(student.major)  # Sortie : Computer Science

Sortie attendue :

name: Lily
age: 18
grade: A
school: MIT
Computer Science

Analyse du code :

  • Plusieurs attributs peuvent être définis dynamiquement via une boucle.
  • setattr peut ajouter de nouveaux attributs à un objet.
  • Cela est utile lors de la gestion de fichiers de configuration ou de saisies utilisateur.

Exemple 3 : Utilisation de __dict__

Exemple

# Afficher le __dict__ de l'objet
class Car:
    def __init__(self):
        self.brand = "Toyota"

car = Car()
print(car.__dict__)  # Sortie : {'brand': 'Toyota'}

# Utiliser setattr pour ajouter des attributs
setattr(car, 'model', 'Camry')
setattr(car, 'year', 2024)

print(car.__dict__)  # Sortie : {'brand': 'Toyota', 'model': 'Camry', 'year': 2024}

# Vérifier si l'attribut existe
if hasattr(car, 'brand'):
    print(f"Marque : {getattr(car, 'brand')}")

Sortie attendue :

{'brand': 'Toyota'}
{'brand': 'Toyota', 'model': 'Camry', 'year': 2024}
品牌: Toyota

setattr()Généralement utilisé avecgetattr()、hasattr()、delattr()ensemble, formant une boîte à outils complète pour les opérations sur les attributs.


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


Autres extensions