Python

Dataclass with frozen + slots + defaults

admin by @admin ADMIN
Jun 12, 2026
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
Modern dataclass essentials: immutable instances (frozen=True), tighter memory + faster attribute access (slots=True), and default_factory for mutable defaults so every instance gets its own list.
Python
Raw
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
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.