python - 将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 及更高版本的良好行为 **
解决方案
正如许多用户在这里所建议的那样,这在 python 3.7 及更高版本上运行良好。
推荐阅读
- python - 加权晶格路径
- bash - 从文件中读取值并将其放入变量中
- ruby-on-rails - 偏僻的: !预编译资产失败。偏僻的: !偏僻的: !推送被拒绝,无法编译 Ruby 应用程序
- javascript - 当它的文本更长然后越过边界
- c# - 得到一个错误断言在表达式上失败
- c++ - int foo = bar << '\n'; 是什么意思?在 C++ 中是什么意思?
- mysql - 使用聚合的 SQL 连接
- python - scipy中的理论正态分布函数
- r - 当我运行混合模型时,我的所有因素都没有显示在结果中
- bash - 在管道后的 nlines 上的 bash 和 xargs 循环中