Я пишу декоратор, который поймает TypeError для неправильного количества аргументов в вызове функции и распечатает настроенное сообщение. Код здесь:Сохранять подпись в Decorator python 2
import inspect
def inspect_signature(f):
def decorate(*args, **kwargs):
try:
f(*args, **kwargs)
except TypeError as e:
print('Failed to call "{}" with signature {}. Provided args={} and kwargs={}.'.format(
f.__name__, inspect.getargspec(f).args, args, kwargs))
return f
return decorate
@inspect_signature
def func(foo, bar):
pass
func('a')
func('a', 'b')
я получаю следующий результат:
Failed to call "func" with signature ['foo', 'bar']. Provided args=('a',) and kwargs={}.
Called successfully with foo=a, bar=b
ArgSpec(args=[], varargs='args', keywords='kwargs', defaults=None)
Функция подписи пуста. Пожалуйста, предложите мне решение, как я могу его сохранить?
PS: Я использую python2 и не могу переключиться на python3.
Я обновил ответ. Вы получили это? –