Python __init __(self,** kwargs)占用1个位置参数,但给出了2个

时间:2017-05-25 14:33:26

标签: python typeerror

我在Python 3.6中创建了一个简单的类,它应该接受键,字典中的值作为参数

我的代码:

class MyClass:
    def __init__(self, **kwargs):
        for a in kwargs:
            self.a=kwargs[a]
            for b in a:
                self.a.b = kwargs[a][b]
Test = MyClass( {"group1":{"property1":100, "property2":200},\
    "group2":{"property3":100, "property4":200}})

我的代码返回错误:

  

TypeError: init ()需要1个位置参数但是2个被赋予

我希望Test.group2.property4返回200

我发现有很多类似的问题但是到处都存在的主要问题是 init 方法中缺少“自我”。但我知道了。

有人可以解释这个错误的原因吗? 感谢

1 个答案:

答案 0 :(得分:8)

将参数作为解压缩的dict传递,而不是作为单个位置参数传递:

MyClass(**{"group1":{"property1":100, "property2":200},\
    "group2":{"property3":100, "property4":200}})