Dataclasses a fondo en Python
Más allá de lo básico: orden, valores por defecto y datos congelados.
from dataclasses import dataclass, field
@dataclass(order=True)
class Tarea:
prioridad: int
titulo: str = "sin título"
etiquetas: list[str] = field(default_factory=list)
@dataclass(frozen=True)
class Configuracion:
host: str
puerto: int = 8080
urgente = Tarea(1, "lánzalo", etiquetas=["lanzamiento"])
posterior = Tarea(5)
ordenado = sorted([posterior, urgente])
Cómo funciona
@dataclass(order=True)deriva los métodos de comparación.field(default_factory=list)evita defaults mutables compartidos.frozen=Truevuelve inmutables las instancias.
Palabras clave y builtins usados aquí
classintlistsortedstr
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 367
- Tokens
- 89
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 51 segundos.
Paso 2 de 4 en Tipado y dataclasses; paso 21 de 53 en Python pythónico.