关于typeerror: __init__(self,**kwargs) 接受1个位置参数,但给出了2个

Python __init__(self,**kwargs) takes 1 positional argument but 2 were given

本问题已经有最佳答案,请猛点这里访问。

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

我的代码:

1
2
3
4
5
6
7
8
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() takes 1 positional argument but 2 were given

我希望test.group2.property4返回200

我发现了许多类似的问题,但是主要的问题是init方法中缺少"self"。但我有。

有人能解释这个错误的原因吗?谢谢


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

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