Встречается на собеседованиях • сегодня
Как не потерять 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__`.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы