Обертки выдают TypeError при использовании в декоратореPython

Программы на Python
Ответить
Anonymous
 Обертки выдают TypeError при использовании в декораторе

Сообщение Anonymous »

Я создал декоратор для печати имени функции, которую он декорирует, и он работает:

Код: Выделить всё

>>> def debug(func):
...    msg=func.__qualname__
...    def wrapper(*args, **kwargs):
...       print(msg)
...       return func(*args, **kwargs)
...    return wrapper
...
>>> @debug
... def add(x, y):
...    return x+y
...
>>> add(1,2)
add
3
Теперь я хотел применить декоратор оберток к обертке, но когда я это сделал, я получил ошибку «TypeError: update_wrapper() получил несколько значений для аргумента «обернутый»»< /p>

Код: Выделить всё

>>> from functools import wraps
>>>
>>> def debug(func):
...    msg=func.__qualname__
...    @wraps
...    def wrapper(*args, **kwargs):
...       print(msg)
...       return func(*args, **kwargs)
...    return wrapper
...
>>> @debug
... def add(x, y):
...    return x+y
...
>>> add(1,2)
Traceback (most recent call last):
File "", line 1, in 
TypeError: update_wrapper() got multiple values for argument 'wrapped'
>>>
Что я делаю не так и почему возникает ошибка?

Подробнее здесь: https://stackoverflow.com/questions/443 ... -decorator
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»