派生的Python数据类无法覆盖默认值?

问题描述 投票:0回答:1

在以下代码片段中,数据类

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
方法吗?还是我在这里做错了什么?

python inheritance python-dataclasses
1个回答
0
投票

要在

Derived
中设置默认值,您需要添加类型注释

@dataclass
class Derived(Base):
    field1: str = "default_string1"
    field2: str = "default_string2"


print(Derived()) # Derived(field1='default_string1', field2='default_string2')
© www.soinside.com 2019 - 2024. All rights reserved.