Las dataclases en Python son una forma más elegante y eficiente de crear clases que principalmente almacenan datos. Este tipo de clases facilitan la lectura y escritura del código, y también generan automáticamente métodos comunes como __init__, __repr__ y __eq__ entre otros.
Importación y uso básico
Primero, es necesario importar dataclass desde el módulo dataclasses.
from dataclasses import dataclassLuego, puedes usar el decorador @dataclass para crear una clase que almacenará datos.
@dataclass
class Punto:
x: int
y: int¿Qué son los decoradores?
un decorador es una función que toma otra función como argumento y extiende su comportamiento, devolviendo una nueva función que generalmente envuelve la función original. Puedes usar el símbolo
@seguido del nombre del decorador para aplicarlo a una función.
Métodos generados automáticamente
Por defecto, las dataclases generan automáticamente los métodos __init__, __repr__ y __eq__.
p = Punto(2, 3)
print(p) # Output: Punto(x=2, y=3)Inmutabilidad
Puedes hacer que los campos sean inmutables usando el parámetro frozen=True.
@dataclass(frozen=True)
class PuntoInmutable:
x: int
y: intValores predeterminados
También puedes asignar valores predeterminados a los campos.
@dataclass
class PuntoConDefaults:
x: int = 0
y: int = 0Tipos compuestos
Las dataclases también pueden contener tipos compuestos como listas o diccionarios.
@dataclass
class Poligono:
vertices: list[Punto]Comparación de objetos
Las dataclases generan automáticamente el método __eq__, lo que facilita la comparación de objetos.
p1 = Punto(1, 2)
p2 = Punto(1, 2)
print(p1 == p2) # Output: TrueOrdenamiento
Si deseas que los objetos sean ordenables, puedes usar el parámetro order=True.
@dataclass(order=True)
class PuntoOrdenable:
x: int
y: int