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.
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.
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é.
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