我想动态地更新类的属性,但似乎setattr和getattr的组合不起作用,因为我想使用它。python combined 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方法,但如果可能的话,我想浓缩它。
任何人都可以解释为什么这不起作用?我有什么替代方案?
感谢您的帮助
“*此部分在我运行代码时不起作用*”如何?另外,你希望发生什么? – Blender 2013-03-08 11:33:55