Before I transferred this code to the class, get_owner_by_number_input_value1 worked fine, but in the class, now it does not work and gives an error "get_owner_number_input_value1 () Got Multiple Values for Argument 'Self'" and now only the option with get_owner_by_number_input_value2. I do not understand what a mistake, I looked like similar questions and did not find similarity with my. The head hurts, spent a bunch of time, but no sense. Big request to help, because I do not know what to do and where else to contact)
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()