【发布时间】:2021-02-26 02:10:10
【问题描述】:
class CashRegister:
def __init__(self, user, **kwargs):
self.user = user
self.items = kwargs
myRegister = CashRegister('name')
print(type(myRegister.items))
上面的代码告诉我 self.items 参数(输出:
myRegister = CashRegister('name', {'a': 1, 'b': 2})
我收到以下错误。
myRegister = CashRegister('name', {'a': 1, 'b': 2}) TypeError: __init__() takes 2 positional arguments but 3 were given
我做错了什么?
【问题讨论】:
-
**kwargs在函数定义签名中使您的函数采用任意数量的关键字参数。这些将被分组到您的功能中的dict,kwargs。当你像这样调用你的函数时:CashRegister('name', {'a': 1, 'b': 2})你没有提供 *any 关键字参数,你提供了 2 个位置参数,但你只定义了你的函数来接受一个,name。因此错误
标签: python class dictionary