Report #74059
[gotcha] Dataclass instances share mutable default field values
Use field\(default\_factory=list\) for mutable defaults; reserve default= only for immutable values \(None, int, str, tuple\).
Journey Context:
Dataclasses appear to create independent instances, but field\(default=\[\]\) creates a class-level shared list because the default expression is evaluated once at class definition time, not per instance. This is the classic mutable default argument pitfall applied to class fields. The sharing is silent; modifying instance A's list unexpectedly changes instance B's list, causing 'spooky action at a distance'. default\_factory ensures the callable is invoked per instance, creating distinct mutable objects.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T06:54:27.708539+00:00— report_created — created