"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Astuce Python : Utiliser des classes de données avec field(default_factory=...)

Astuce Python : Utiliser des classes de données avec field(default_factory=...)

Publié le 2024-11-02
Parcourir:152

Python Trick: Using dataclasses with field(default_factory=...)

Le module dataclasses de Python simplifie la création de classes utilisées pour stocker les données.

Bien que la plupart des gens connaissent l'utilisation de base, il existe un champ de fonctionnalité moins connu (default_factory=...) qui peut être incroyablement utile pour gérer les valeurs par défaut dans les types mutables.


Comment ça marche

Lors de la définition d'une classe de données, vous souhaiterez peut-être utiliser une valeur par défaut modifiable, telle qu'une liste ou un dictionnaire.

L'utilisation directe d'une valeur par défaut mutable peut entraîner un comportement inattendu en raison de la manière dont les arguments par défaut sont partagés entre les instances.

La fonction default_factory fournit un moyen simple de gérer les valeurs par défaut mutables.

Voici un exemple simple :

from dataclasses import dataclass, field
from typing import List


@dataclass
class Student:
    name: str
    grades: List[int] = field(default_factory=list)  # Use default_factory for mutable default


# Create new Student instances
student1 = Student(name="Alice")
student2 = Student(name="Bob", grades=[90, 85])

# Modify student1's grades
student1.grades.append(95)

print(student1)  # Output: Student(name='Alice', grades=[95])
print(student2)  # Output: Student(name='Bob', grades=[90, 85])


# Output:
# Student(name='Alice', grades=[95])
# Student(name='Bob', grades=[90, 85])

Dans cet exemple, les notes sont initialisées avec une liste vide pour chaque nouvelle instance Student.
L'utilisation de field(default_factory=list) garantit que chaque instance obtient sa propre liste distincte, évitant ainsi les pièges des valeurs par défaut mutables partagées.


Pourquoi c'est cool

La fonctionnalité default_factory est inestimable pour éviter les problèmes courants liés aux arguments par défaut mutables.

Cela permet de garantir que chaque instance d'une classe de données a sa propre valeur par défaut, ce qui rend votre code plus prévisible et évite les bogues subtils liés à l'état partagé.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/devasservice/python-trick-using-dataclasses-with-fielddefaultfactory-4159?1 En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3