gpt4 book ai didi

python - 将所有字段从一个数据类实例复制到另一个实例的最简单方法?

转载 作者:行者123 更新时间:2023-12-03 18:31:19 35 4
gpt4 key购买 nike

假设您已经定义了一个 Python 数据类:

@dataclass
class Marker:
a: float
b: float = 1.0
从实例复制值的最简单方法是什么 marker_a到另一个实例 marker_b ?
这是我尝试实现的目标的示例:
marker_a = Marker(1.0, 2.0)
marker_b = Marker(11.0, 12.0)
# now some magic happens which you hopefully can fill in
print(marker_b)
# result: Marker(a=1.0, b=2.0)
作为边界条件,我不想创建新实例并将其分配给 marker_b .好的,我可以遍历所有定义的字段并一个一个复制值,但我想必须有一种更简单的方法。

最佳答案

dataclasses.replace函数返回对象的新副本。
不传递任何更改,它将返回一个没有修改的副本:

>>> import dataclasses
>>> @dataclasses.dataclass
... class Dummy:
... foo: int
... bar: int
...
>>> dummy = Dummy(1, 2)
>>> dummy_copy = dataclasses.replace(dummy)
>>> dummy_copy.foo = 5
>>> dummy
Dummy(foo=1, bar=2)
>>> dummy_copy
Dummy(foo=5, bar=2)
请注意,这是一个浅拷贝。
编辑以解决评论:
如果不需要副本,我可能会采用以下方法:
for key, value in dataclasses.asdict(dummy).items():
setattr(some_obj, key, value)

关于python - 将所有字段从一个数据类实例复制到另一个实例的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57962873/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com