functools.wraps
Декоратор, дополняющий функцию-обёртку, данными из некоторых атрибутов оборачиваемой функции.
functools.wraps(wrapped, assigned=WRAPPER_ASSIGNMENTS, updated=WRAPPER_UPDATES)
-> callable
wrapped -- Оборачиваемая функция.
assigned=WRAPPER_ASSIGNMENTS -- Кортеж с именами атрибутов оборачиваемой функции, которые следует перенести в обёртку.
updated=WRAPPER_UPDATES -- Кортеж с именами атрибутов оборачиваемой функции, которыми следует обновить обёртку.
assigned=WRAPPER_ASSIGNMENTS -- Кортеж с именами атрибутов оборачиваемой функции, которые следует перенести в обёртку.
updated=WRAPPER_UPDATES -- Кортеж с именами атрибутов оборачиваемой функции, которыми следует обновить обёртку.
Этот декоратор существует для облегчения применения функции functools.update_wrapper() и призван обрамлять функцию-обёртку.
from functools import wraps
def decorator(func):
@wraps(func)
def wrapper():
"""Описание обёртки."""
return func()
return wrapper
@decorator
def decorated():
"""Описание функции."""
print(decorated.__name__) # decorated
print(decorated.__doc__) # Описание функции.
# А если не использовать wraps, то получим следующее:
def decorator_nowraps(func):
def wrapper():
"""Описание обёртки."""
return func()
return wrapper
@decorator_nowraps
def decorated():
"""Описание функции."""
print(decorated.__name__) # wrapper
print(decorated.__doc__) # Описание обёртки.
Синонимы поиска: functools.wraps, functools, wraps, обёртка, обернуть
На заметку
Зарегистрированные пользователи могут публиковать свои Статьи.