Встречается на собеседованиях • сегодня

Как не потерять docstring функции, обернутой декоратором

Для сохранения docstring обёрнутой функции при использовании декоратора можно воспользоваться декоратором functools.wraps. Он копирует метаданные оригинальной функции (включая docstring) в декорированную.

Пример:

python
from functools import wraps

def my_decorator(func):
@wraps(func) # сохраняет метаданные оригинальной функции
def wrapper(*args, **kwargs):
print("Дополнительная логика")
return func(*args, **kwargs)
return wrapper

@my_decorator
def example():
"""Это docstring функции example"""
pass

print(example.doc) # Выведет: "Это docstring функции example"

text

Без `@wraps` декоратор вернул бы docstring обёртки (wrapper), а не оригинальной функции. `functools.wraps` также сохраняет другие атрибуты функции, такие как `__name__`, `__module__` и `__annotations__`.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы