import dataclasses
@dataclasses.dataclass
class MyClass:
a: int
b: int = dataclasses.field(default=0, init=False)
m = MyClass(a=0)
print(repr(m))
# prints: "MyClass(a=0, b=0)"
# `eval(repr(m))` raises an exception due to unexpected `b=0`.
Shouldn't b be omitted from repr - i.e., eval(repr(m)) shall be able to recreate an instance?
Python 3.13.3
I forgot about the field parameter repr... 🙈
https://docs.python.org/3/library/dataclasses.html#dataclasses.field
Solution:
import dataclasses
@dataclasses.dataclass
class MyClass:
a: int
b: int = dataclasses.field(default=0, init=False, repr=False)
m = MyClass(a=0)
print(repr(m))
# prints: "MyClass(a=0)"
m2 = eval(repr(m))
print(m2)
# prints: "MyClass(a=0)"