Sobes.tech
Junior — Middle
67

Kako sačuvati prikaz dokumentacije funkcije ako je ona obmotana dekoratorom?

Одговор од АИ

sobes.tech АИ

При оборачивании функции декоратором в 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 и другие атрибуты оригинальной функции в обёртку, сохраняя документацию и удобство отладки.