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

发布于 2021-01-29 14:56:27

假设您已经定义了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。好的,我 可以 遍历所有定义的字段,然后逐个复制值,但是我想必须有一种更简单的方法。

关注者
0
被浏览
91
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    我认为遍历这些字段可能是最简单的方法。我能想到的所有其他选项都涉及创建一个新对象。

    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)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看