Fields with single underscore names can mess up dataclasses
A similar issue to #96151. ericvsmith mentioned this is worth opening an issue for in #98143 (comment)
dataclasses uses variables with single underscore names as part of its implementation. This can cause interesting errors, for example:
from dataclasses import dataclass, field @dataclass class X: x: int = field(default_factory=lambda: 111) _dflt_x: int = field(default_factory=lambda: 222) X() # TypeError: '_HAS_DEFAULT_FACTORY_CLASS' object is not callable
The fix is simple: prefix all of these things with __dataclass_, to make name collisions more obviously the user's fault. We already do this for e.g. __dataclass_self__ in the implementation.