Please check the code below
import dataclasses
@dataclasses.dataclass
class A:
a: int = 10
def __init_subclass__(cls, **kwargs):
for f in dataclasses.fields(cls):
print(" ", cls, f.name)
print("Defining Subclass B")
@dataclasses.dataclass
class B(A):
b: int = 100
print("Defining Subclass C")
@dataclasses.dataclass
class C(B):
c: int = 1000
The output is
Defining Subclass B
<class '__main__.B'> a
Defining Subclass C
<class '__main__.C'> a
<class '__main__.C'> b
I was expecting
Defining Subclass B
<class '__main__.B'> a
<class '__main__.B'> b
Defining Subclass C
<class '__main__.C'> a
<class '__main__.C'> b
<class '__main__.C'> c
Clearly the dunder method __init_subclass__ does not have the idea of fields in subclass yet as it is not loaded. Please let me know how can I get the expected output.