Sobes.tech
Junior — Middle
71

Como pode guardar a visualização da documentação de uma função se ela estiver envolvida por um decorador?

Resposta da IA

sobes.tech IA

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