在以下代码片段中,数据类
Derived
派生自数据类 Base
。 Derived
数据类正在为 field1
和 field2
设置新的默认值。
from dataclasses import dataclass
@dataclass
class Base:
field1: str
field2: str = "default_base_string"
@dataclass
class Derived(Base):
field1 = "default_string1"
field2 = "default_string2"
print(Derived())
因为
Derived
是一个数据类,并且为所有成员变量field1
和field2
设置了默认值,我希望我可以简单地初始化调用Derived()
的类。但是我收到以下错误:
TypeError: Derived.__init__() missing 1 required positional argument: 'field1'
是否无法为派生数据类中的成员变量设置默认值,以便该成员变量在自动生成的
__init__()
方法中变为可选?我必须始终在 __init__()
类中定义自己的 Derived
方法吗?还是我在这里做错了什么?
要在
Derived
中设置默认值,您需要添加类型注释
@dataclass
class Derived(Base):
field1: str = "default_string1"
field2: str = "default_string2"
print(Derived()) # Derived(field1='default_string1', field2='default_string2')