Dataclasses are nice but they have a big downside: extending a dataclass with a default property can raise an error.
If you run this code:
import dataclasses
@dataclasses.dataclass
class Base:
a: int
b: int = 1
@dataclasses.dataclass
class Child(Base):
c: int
Then you'll get this error: TypeError: non-default argument 'c' follows default argument