为什么数据类在类属性声明中无法具有可变默认值?

2024-05-06 10:45:45 发布

您现在位置:Python中文网/ 问答频道 /正文

这个看起来像是以前有人问过的问题,但是一个小时左右的搜索没有结果。Passing default list argument to dataclasses看起来很有前途,但这并不是我想要的。

问题是:当试图将可变值赋给类属性时,会出现一个错误:

@dataclass
class Foo:
    bar: list = []

# ValueError: mutable default <class 'list'> for field a is not allowed: use default_factory

我从错误消息中得知,我应该改为使用以下内容:

@dataclass
class Foo:
    bar: list = field(default_factory=list)

但为什么不允许可变违约呢?是为了强制避免mutable default argument problem


Tags: todefaultfieldfoofactory错误barargument