Sobes.tech
Back to questions
Junior — Middle
47

Каким образом можно сохранить отображение документации функции, если она обернута декоратором?

Answer from AI

sobes.tech AI

При оборачивании функции декоратором в Python оригинальная документация (docstring) функции теряется, так как декоратор возвращает новую функцию. Чтобы сохранить docstring и другие метаданные, используют функцию functools.wraps.

Пример:

import functools

def decorator(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        # дополнительная логика
        return func(*args, **kwargs)
    return wrapper

@decorator
def my_function():
    """Это документация функции."""
    pass

print(my_function.__doc__)  # Выведет: Это документация функции.

functools.wraps копирует имя, модуль, docstring и другие атрибуты оригинальной функции в обёртку, сохраняя документацию и удобство отладки.