我想动态更新一个类的属性,但似乎 setattr 和 getattr 的组合不起作用,因为我想使用它。
这是我的主要课程:
class Container(object):
def __init__(self):
pass
container = Container()
attributes = ['a', 'b', 'c', 'd']
values = [[1, 2, 3, 4, 5], [True, False], ['red', 'blue', 'green'], [0, 1, -1, -5, 99]]
请注意,出于该示例的目的,我明确构建了属性列表及其各自的值。但是,在这段代码的实际应用中,我事先并不知道任何事情。它们的编号、名称或值都不是。这需要动态地执行此操作。
这是其余的代码:
for key, value in zip(attributes, values):
setattr(container, key, [])
for val in value:
setattr(container, key, getattr(container, key).append(val))
当我运行代码时,这部分不起作用。我可以将 getattr 部分保存在 tmp 变量中,然后在调用 setattr 之前调用列表的 append 方法,但如果可能的话,我想压缩它。
任何人都可以向我解释为什么这不起作用?我有什么选择?
谢谢你的帮助