首页 > 解决方案 > 如何就地更新数据类?

问题描述

给定同一数据类的两个实例,如何使用第二个实例的值就地更新第一个实例?

IE

@dataclass
class Foo:
    a: str
    b: int

f1 = Foo("foo", 1)
f2 = Foo("bar", 2)

# Update in place, so that f1.a == f2.a, f1.b == f2.b and so on

注意:我不想简单地设置f1 = f2; 我想f1就地更新。

标签: pythonpython-dataclasses

解决方案


用于dataclasses.fields循环遍历所有属性并一一设置。

from dataclasses import fields

for f in fields(f2):
    setattr(f1, f.name, getattr(f2, f.name))

推荐阅读