缺少必需的位置参数:Python: self
missing required positional arguments: Python: self
出现错误:
TypeError: _get_request() missing 6 required positional arguments: 'id_list', 'id_item', 'to_be_sent', 'open', 'received', and 'sent'
当我尝试调用函数时:
def _get_request(self, id: str,
id_list: List[str],
id_item: List[int],
to_be_sent: List[int],
open: List[int],
received: List[int],
sent: List[int]):
return {
'id': user_id,
'num_results': 3,
'id_list': uniqueVisitId,
'id_item': id_item,
'to_be_sent': need_to_be_sent,
'open': open,
'received': received,
'sent': sent
}
作者:
self._get_request(
{
'id': 'x',
'id_list': ['a', 'x'],
'id_item': [1, 2],
'to_be_sent': [1, 0],
'open': [0, 0],
'received': [0, 0],
'sent': [0, 0]
}
)
猜猜为什么我的函数无法识别我传递的位置参数?
因为你传递的是字典而不是参数...
您应该在没有 Dict 语法的情况下按顺序传递参数:
self._get_request('x', ['a', 'x'], [1, 2], [1, 0], [0, 0],[0, 0], [0, 0])
在 dict 项之前使用 **
将它们解析为函数中的 key=value
def foo(*, a, b):
return a, b
dict = {'a': 1, 'b': 2}
print(foo(dict)) # -> missing
print(foo(**dict)) # -> returns (1, 2)
你只传递了一个参数——一本字典。如果您只是编写对 get_request() 的特定调用,and/or 字典将始终具有那组指定的键,请按照 adir 所说的进行操作。如果您传递的词典来自其他地方,并且可能有不同的关键字。然后你可以像这样使用字典解包:
# Assigning it just for the example, might be the result from a function or whatever you're doing
request_info_dict = {
'id': 'x',
'id_list': ['a', 'x'],
'id_item': [1, 2],
'to_be_sent': [1, 0],
'open': [0, 0],
'received': [0, 0],
'sent': [0, 0]
}
self._get_request(**request_info_dict)
出现错误:
TypeError: _get_request() missing 6 required positional arguments: 'id_list', 'id_item', 'to_be_sent', 'open', 'received', and 'sent'
当我尝试调用函数时:
def _get_request(self, id: str,
id_list: List[str],
id_item: List[int],
to_be_sent: List[int],
open: List[int],
received: List[int],
sent: List[int]):
return {
'id': user_id,
'num_results': 3,
'id_list': uniqueVisitId,
'id_item': id_item,
'to_be_sent': need_to_be_sent,
'open': open,
'received': received,
'sent': sent
}
作者:
self._get_request(
{
'id': 'x',
'id_list': ['a', 'x'],
'id_item': [1, 2],
'to_be_sent': [1, 0],
'open': [0, 0],
'received': [0, 0],
'sent': [0, 0]
}
)
猜猜为什么我的函数无法识别我传递的位置参数?
因为你传递的是字典而不是参数...
您应该在没有 Dict 语法的情况下按顺序传递参数:
self._get_request('x', ['a', 'x'], [1, 2], [1, 0], [0, 0],[0, 0], [0, 0])
在 dict 项之前使用 **
将它们解析为函数中的 key=value
def foo(*, a, b):
return a, b
dict = {'a': 1, 'b': 2}
print(foo(dict)) # -> missing
print(foo(**dict)) # -> returns (1, 2)
你只传递了一个参数——一本字典。如果您只是编写对 get_request() 的特定调用,and/or 字典将始终具有那组指定的键,请按照 adir 所说的进行操作。如果您传递的词典来自其他地方,并且可能有不同的关键字。然后你可以像这样使用字典解包:
# Assigning it just for the example, might be the result from a function or whatever you're doing
request_info_dict = {
'id': 'x',
'id_list': ['a', 'x'],
'id_item': [1, 2],
'to_be_sent': [1, 0],
'open': [0, 0],
'received': [0, 0],
'sent': [0, 0]
}
self._get_request(**request_info_dict)