如何在代码中修改类对象参数

时间:2015-02-15 17:21:31

标签: python class

我想要完成的是在下面的示例中将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

1 个答案:

答案 0 :(得分:3)

使用setattr动态设置属性:

for i in d:
    setattr(testobj, i, d[i])

或直接更新内部属性字典(vars将作为__dict__ attribute的代理):

vars(testobj).update(d) # No (explicit) loop

如果对象没有__dict__属性(例如,它是使用__slots__属性定义的),则后一种方法将失败。