0

我在这里找到了通过 self.bulk 类属性更新的建议。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)

谁能告诉我为什么这不起作用?干杯 C.

4

3 回答 3

6

因为您没有正确传递值。

c = test(**d)
于 2013-05-20T18:56:29.323 回答
1

像这样使用kwargs:

c = test()
c.update(**d)
于 2013-05-20T18:56:37.190 回答
0

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

于 2013-05-20T20:11:18.170 回答