【发布时间】:2021-06-12 20:28:13
【问题描述】:
我希望在 Python 中使用数据类来创建一个基类和几个派生类。这些类将包含复杂的属性,例如字典。我希望派生类只更改基类定义的字典的一部分,这可能吗?还是我最好上普通的旧课程?
代码sn -p 中显示的是当前的情况,这在代码重复方面似乎很浪费。
在此示例中,我可以定义一个接受单个参数而不是 lambda 的函数,但在现实世界的示例中,我必须为每个此类情况定义一个函数,这很麻烦。
from dataclasses import dataclass, field
@dataclass
class BaseDataClass:
simple_field_one: int = 100
simple_field_two: int = 200
complex_field: dict = field(default_factory=lambda: {
'x': 0.1,
'y': ['a', 'b']
})
@dataclass
class DerivedDataClass(BaseDataClass):
simple_field_two: int = 300 # this is easy
complex_field: dict = field(default_factory=lambda: {
'x': 0.1,
'y': ['a', 'c']
}) # this is wasteful. All I changed was complex_field['y'][1]
【问题讨论】: