from dataclasses import * class D: """A descriptor class that knows its name.""" def __set_name__(self, owner, name): self.name = name def __get__(self, instance, owner): if instance is not None: return 1 return self from dataclasses import * @dataclass class C: d: int = field(default=D(), init=False) @dataclass class E(C): e: int = field(default=D(), init=False)