typestar

Dataclasses, a fondo en Python

frozen, slots, fábricas de valores por defecto y __post_init__.

from dataclasses import dataclass, field


@dataclass(frozen=True, slots=True, order=True)
class Resultado:
    tpm: float
    lang: str = "python"
    etiquetas: tuple[str, ...] = ()


@dataclass
class Sesion:
    runs: list[Resultado] = field(default_factory=list)
    best: float = field(init=False, default=0.0)

    def __post_init__(self):
        self.best = max((r.tpm for r in self.runs), default=0.0)


a, b = Resultado(104.0), Resultado(98.0, "rust")
print(sorted([a, b])[0].lang, hash(a) is not None)
print(Sesion([a, b]).best)

Cómo funciona

  1. frozen=True hace las instancias hashables e inmutables.
  2. field(default_factory=...) es la manera segura de tener un valor por defecto mutable.
  3. __post_init__ corre después del init generado, para valores derivados.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
22
Caracteres a escribir
507
Tokens
159
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 91 segundos.

Escribe este fragmento

Paso 1 de 3 en Datos y enums; paso 45 de 53 en Python pythónico.

← Anterior Siguiente →