Maison >développement back-end >Tutoriel Python >Astuce Python : Utiliser des classes de données avec field(default_factory=...)
Le module dataclasses de Python simplifie la création de classes utilisées pour stocker des 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 propre 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é.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!