Syntax
@dataclass; field(default_factory=list)Examples
Dataclasses and Independent Defaults
Run as a Python 3.11+ script.
from dataclasses import dataclass, field
@dataclass
class Basket:
owner: str
items: list[str] = field(default_factory=list)
a = Basket("Ada")
b = Basket("Lin")
a.items.append("tea")
print(a)
print(b.items)- Expected output: Basket(owner='Ada', items=['tea']) []
- Each constructor calls list independently. Appending to Ada’s basket therefore leaves Lin’s basket empty.
Best practices
- Use default_factory for mutable field defaults.
- Implement validation in __post_init__ when a model requires runtime invariants.
Runtime & versions
Python interpreter. Feature availability depends on the language and runtime version used by your project; consult the official reference below.
Python language reference