3. Use default_factory for mutable dataclass defaults

Use default_factory for mutable dataclass fields instead of sharing one default object across instances.

Mutable defaults are shared at class definition time, which means one instance can accidentally affect another. default_factory makes the per-instance allocation explicit and prevents one of the most common dataclass footguns.

3.1. Don’t do this

1from dataclasses import dataclass
2
3@dataclass
4class Report:
5    tags: list[str] = []

3.2. Do this

1from dataclasses import dataclass, field
2
3@dataclass
4class Report:
5    tags: list[str] = field(default_factory=list)