通过self._dict__更新属性

时间:2013-05-20 18:54:15

标签: python class

我在这里找到了一个通过自我更新批量类属性的建议。 dict .upadte 所以我试过

class test(object):
    def __init__(self, **kwargs):
        self.__dict__.update(kwargs)
    def update(self, **kwargs):
        self.__dict__.update(kwargs)

d = {'a':1,'b':2,'c':3}

c = test(d)

以及

c = test()
c.update(d)

但是我收到了错误

TypeError: __init__() takes exactly 1 argument (2 given)

有谁能告诉我为什么这不起作用? 干杯 下进行。

3 个答案:

答案 0 :(得分:6)

因为您没有正确传递值。

c = test(**d)

答案 1 :(得分:1)

像这样使用kwargs:

c = test()
c.update(**d)

答案 2 :(得分:0)

test(d)将d传递给test的构造函数作为第一个位置参数(在实例变量本身之后)。 test.__init__不接受任何位置参数,只接受关键字参数。正如其他人所说,使用test(**d)