假设您已经定义了Python数据类:
@dataclass class Marker: a: float b: float = 1.0
将值从一个实例复制marker_a到另一个实例的最简单方法是marker_b什么?
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。好的,我 可以 遍历所有定义的字段,然后逐个复制值,但是我想必须有一种更简单的方法。
我认为遍历这些字段可能是最简单的方法。我能想到的所有其他选项都涉及创建一个新对象。
from dataclasses import fields marker_a = Marker(5) marker_b = Marker(0, 99) for field in fields(Marker): setattr(marker_b, field.name, getattr(marker_a, field.name)) print(marker_b) # Marker(a=5, b=1.0)