objectif
Créer une copie modifiée d’une dataclass (pattern immuable).
code minimal
from dataclasses import dataclass, replace
@dataclass(frozen=True)
class Cfg: host: str; port: int
a = Cfg("localhost", 8000)
b = replace(a, port=9000)
print(a.port == 8000 and b.port == 9000) # attendu: True
utilisation
from dataclasses import dataclass, replace
@dataclass(frozen=True)
class Point: x: int; y: int
p = Point(1,2)
q = replace(p, y=3)
print((p.x, p.y, q.y) == (1,2,3))
variante(s) utile(s)
from dataclasses import replace
print(callable(replace))
notes
- Avec frozen=True, remplace est la voie standard pour des mises à jour.
- Pour des dataclasses non gelées, replace retourne aussi une copie.