我想要完成的是在下面的示例中将testobj.alpha
设置为.5
:
class test():
def __init__(self):
self.alpha = 0
d = {'alpha' : .5}
testobj = test()
for i in d:
testobj.i = d[i] #creates a new class member called 'i' instead of setting alpha to .5
正如评论所说,在for
循环中,创建了一个名为i
的新类成员,而不是将现有alpha
成员设置为.5
答案 0 :(得分:3)
使用setattr
动态设置属性:
for i in d:
setattr(testobj, i, d[i])
或直接更新内部属性字典(vars
将作为__dict__
attribute的代理):
vars(testobj).update(d) # No (explicit) loop
如果对象没有__dict__
属性(例如,它是使用__slots__
属性定义的),则后一种方法将失败。