我有一个类,我想用另一个实例覆盖一个实例(一个字段除外)。我的方法是这样的:
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
上的值。
最佳答案
感谢 @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()
的同级函数,它允许您设置属性。
关于python - 如何使用变量动态访问/覆盖类中的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55465341/