2013-05-20 110 views
0

我在這裏找到了一個建議,通過自我更新批量類屬性。 字典 .upadte 所以,我想通過self更新屬性._dict__

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) 

和以及

​​

但我得到的錯誤

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

誰能告訴我這是爲什麼不工作? Cheers C.

回答

6

因爲您沒有正確傳遞值。

c = test(**d) 
+0

並解決了我的問題。非常感謝Ignacio – chrise

1

用法kwargs這樣的:

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

test(d)傳遞d測試的構造爲(實例變量本身後)第一位置參數。 test.__init__不接受任何位置參數,只有關鍵字參數。正如其他人所指出的,使用test(**d)