【发布时间】:2021-12-01 15:40:48
【问题描述】:
在我将此代码转移到类之前,get_owner_by_number_input_value1 工作正常,但在类中,现在它不起作用并给出错误“get_owner_number_input_value1 () Got Multiple Values for Argument 'Self'”,现在只有带有 get_owner_by_number_input_value2 的选项.我不明白这是什么错误,我看起来像类似的问题,并没有发现与我的相似之处。头疼,用了一堆时间,但没有任何意义。大请求帮助,因为我不知道该做什么以及在哪里联系)
import inspect
documents = [
{"type": "passport", "number": "2207 876234", "name": "Gloria", },
{"type": "invoice", "number": "11-2", "name": "Jack Nickolas", },
{"type": "insurance", "number": "10006", "name": "John", }
]
class DocumentManager:
def __init__(self, doc):
self._documents = doc
def input_arguments_with_prompts(*prompts):
def decorator(func):
def wrapper(*args, **kwargs):
parameters = inspect.signature(func).parameters
for prompt, (name, parameter) in zip(prompts, parameters.items()):
while True:
value = input(prompt)
if parameter.annotation is inspect._empty:
converted_value = value
break
try:
converted_value = parameter.annotation(value)
except ValueError:
pass
else:
break
kwargs[name] = converted_value
return func(*args, **kwargs)
return wrapper
return decorator
def get_owner_by_number(self, number: str) -> str:
for document in self._documents:
if document["number"] == number:
return document["name"]
return ""
@input_arguments_with_prompts(
"Enter the document number, the owner of which you want to get: ",
)
def get_owner_by_number_input_value1(self, input_number: str):
return self.get_owner_by_number(input_number)
def get_owner_by_number_input_value2(self):
input_number = input('Enter number')
return self.get_owner_by_number(input_number)
dm = DocumentManager(documents)
dm.get_owner_by_number_input_value1()
【问题讨论】:
-
你试过把装饰器移到课堂外吗?如果你还没看过:stackoverflow.com/questions/11740626/…
-
@PM77-1 是的,我在课堂内外都尝试过 self 。错误是一样的,但是当在类中指定 self 时,它会抛出一个错误,即缺少所需的 input_number 参数
标签: python python-3.x