如何使用变量动态访问/覆盖类中的字段?

2024-03-28 23:19:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类,我想用另一个实例覆盖一个实例(除了一个字段)。我的方法是这样的:

for key in my_class_instance_1.__dict__.keys():
    if key != "key_i_dont_want_to_overwrite":
        my_class_instance_1[key] = my_class_instance_2[key]

问题是我得到了错误TypeError: 'MyClass' object is not subscriptable。你知道吗

我显然也无法访问这样的实例:my_class_instance_1.f"{key}"。你知道吗

我不知道如何动态地访问类上的键来覆盖它。我知道我可以使用getattr(my_class_instance_2, key)来访问值,但这无助于覆盖my_class_instance_1上的值。你知道吗


Tags: to实例方法instancekeyinforif
1条回答
网友
1楼 · 发布于 2024-03-28 23:19:25

多亏了@kindall和@skullgoblet1089的回答,我才弄明白这一点,但是对于其他有这个问题的人,让我给你看看工作代码:

for key in my_class_instance_1.__dict__.keys():
    if key != "key_i_dont_want_to_overwrite":
        val = getattr(my_class_instance_2, key)  # the new value
        setattr(my_class_instance_1, key, val)  # overwriting the old value

有一个getattr()的同级函数叫做setattr(),它允许您设置一个属性。你知道吗

相关问题 更多 >