我有一个我想用另一个实例覆盖一个实例的类(一个字段除外)。我的方法与此类似:
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
上的值。
答案 0 :(得分:1)
由于@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()
的同级函数,可用于设置属性。