objectif
Réduire l’empreinte mémoire et accélérer l’accès aux attributs.
code minimal
from dataclasses import dataclass
@dataclass(slots=True)
class Vec2:
x: float
y: float
v = Vec2(1.0, 2.0)
print(hasattr(v, "__slots__") and v.x + v.y == 3.0) # attendu: True
utilisation
from dataclasses import dataclass
@dataclass(slots=True)
class User: name: str; active: bool = True
u = User("bob")
print(u.active is True)
variante(s) utile(s)
from dataclasses import dataclass, asdict
@dataclass(slots=True)
class P: a:int; b:int
print(asdict(P(1,2))["a"] == 1)
notes
- slots empêche dict; gains mémoire notables sur de nombreux objets.
- Compatible avec frozen=True si besoin.