使用字典作为字段之一时如何使用数据类?
How to use Dataclass when using a dict as one of the fields?
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"])
两行都打印了 return 10,而我希望 test2_obj 仍然是 return 0。如何更改数据类的构造?
** 这在 3.7 及更高版本上是很好的行为 **
正如此处许多用户所建议的,这在 python 3.7 及更高版本上运行良好。
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"])
两行都打印了 return 10,而我希望 test2_obj 仍然是 return 0。如何更改数据类的构造?
** 这在 3.7 及更高版本上是很好的行为 **
正如此处许多用户所建议的,这在 python 3.7 及更高版本上运行良好。