Report #9729
[gotcha] Dataclass instances share mutable default field values between objects
Use \`dataclasses.field\(default\_factory=list\)\` \(or \`dict\`, \`set\`, etc.\) instead of \`default=\[\]\` to ensure a new instance per object.
Journey Context:
Dataclass fields are evaluated once at class definition time, similar to function default arguments. Assigning \`default=\[\]\` creates a single list shared across all instances. Using \`default\_factory\` defers instantiation until object construction, creating distinct objects. This applies to any mutable type \(dicts, sets, custom objects\). Attempting to use a lambda for default\_factory works but prevents pickling; prefer named functions or built-in constructors.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T08:52:21.916867+00:00— report_created — created