首页 > 解决方案 > 将dict用作字段之一时如何使用Dataclass?

问题描述

Dataclass 在以下代码中跨对象更改 dict。我该怎么做才能没有这种行为?

from dataclasses import dataclass, field
from typing import Dict

@dataclass
class Test:
      param: Dict[str, int] = field(default_factory = lambda: ({"xyz": 0}))

test1_obj = Test()
test2_obj = Test()
test1_obj.param["xyz"] = 10
print(test1_obj.param["xyz"])
print(test2_obj.param["xyz"])

打印的两行都返回 10,而我希望 test2_obj 仍然返回 0。如何更改数据类的构造?

** 这是 3.7 及更高版本的良好行为 **

标签: pythonpython-3.7python-dataclasses

解决方案


正如许多用户在这里所建议的那样,这在 python 3.7 及更高版本上运行良好。


推荐阅读