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

WBOY
Libérer: 2024-08-31 06:01:02
original
824 Les gens l'ont consulté

Python Trick: Using dataclasses with 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.


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 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])
Copier après la connexion

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

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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal