【发布时间】:2020-04-05 06:27:31
【问题描述】:
请检查下面的代码
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
输出是
Defining Subclass B
<class '__main__.B'> a
Defining Subclass C
<class '__main__.C'> a
<class '__main__.C'> b
我期待
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
显然,dunder 方法__init_subclass__ 还没有子类中的字段的概念,因为它没有加载。请让我知道如何获得预期的输出。
【问题讨论】:
-
今后,除了任何特定于版本的标签外,请对所有与python相关的问题使用通用的[python]标签
标签: python python-3.x python-dataclasses