from dataclasses import dataclass, field
@dataclass(frozen=True, slots=True)
class User:
id: int
name: str
email: str
roles: list[str] = field(default_factory=list) # never use [] as default!
u = User(id=42, name="Alice", email="a@x.com", roles=["admin"])
print(u)
# User(id=42, name='Alice', email='a@x.com', roles=['admin'])
# Frozen → can't mutate; equality + hash come for free.
# u.name = "Bob" # FrozenInstanceError
print(hash(u)) # works because frozen=True
Create a free account and build your private vault. Share publicly whenever you want.