"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Truco de Python: usar clases de datos con campo (default_factory=...)

Truco de Python: usar clases de datos con campo (default_factory=...)

Publicado el 2024-11-02
Navegar:408

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

El módulo de clases de datos de Python simplifica la creación de clases utilizadas para almacenar datos.

Si bien la mayoría de las personas conocen el uso básico, existe un campo de función menos conocido (default_factory=...) que puede ser increíblemente útil para manejar valores predeterminados en tipos mutables.


Cómo funciona

Al definir una clase de datos, es posible que desee utilizar un valor predeterminado mutable, como una lista o un diccionario.

El uso directo de un valor predeterminado mutable puede provocar un comportamiento inesperado debido a la forma en que se comparten los argumentos predeterminados entre instancias.

La función default_factory proporciona una manera limpia de manejar valores predeterminados mutables.

Aquí tienes un ejemplo sencillo:

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])

En este ejemplo, las calificaciones se inicializan con una lista vacía para cada nueva instancia de Estudiante.
El uso de field(default_factory=list) garantiza que cada instancia obtenga su propia lista separada, evitando los inconvenientes de los valores predeterminados mutables compartidos.


Por qué es genial

La característica default_factory es invaluable para evitar problemas comunes con argumentos predeterminados mutables.

Ayuda a garantizar que cada instancia de una clase de datos tenga su propio valor predeterminado, lo que hace que su código sea más predecible y evita errores sutiles relacionados con el estado compartido.

Declaración de liberación Este artículo se reproduce en: https://dev.to/devasservice/python-trick-using-dataclasses-with-fielddefaultfactory-4159?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3