我有一个dataclass
,我想知道每个字段是显式设置的还是由default
或{
我知道我可以使用dataclasses.fields(...)
获得所有字段,这可能适用于使用default
的字段,但对于使用default_factory
的字段,这可能不容易。在
我的最终目标是合并两个dataclass实例A和B。而B应该只覆盖A的字段,其中A使用默认值。在
用例是一个可以在多个位置指定的配置对象,其中一些具有比其他位置更高的优先级。在
编辑:一个例子
from dataclasses import dataclass, field
def bar():
return "bar"
@dataclass
class Configuration:
foo: str = field(default_factory=bar)
conf1 = Configuration(
)
conf2 = Configuration(
foo="foo"
)
conf3 = Configuration(
foo="bar"
)
我想检测conf1.foo
正在使用默认值,并且conf2.foo
&;conf3.foo
是显式设置的。在
首先,考虑到你对}则显示了它的缺点。但是考虑到这个实现完全按照预期的方式使用
fields
的了解,像这样的merge
函数可能就是您可以编写的,而实例{dataclass
工具,这意味着它相当稳定,所以如果可能的话,您应该使用这个:正确处理
^{pr2}$z
案例涉及到某种的黑客攻击,我个人会再次装饰dataclass:这很可能有一些难以猜测的副作用,所以使用风险自负。在
相关问题 更多 >
编程相关推荐