Что может быть декоратором

Python Middle Без компании
Что может быть декоратором
Ответы
Декоратором в Python может быть любой вызываемый объект (callable), который принимает функцию и возвращает функцию. Основные варианты: - **Функция** - самый распространённый случай: ``` def my_decorator(func): def wrapper(*args, **kwargs): print("До вызова функции") result = func(*args, **kwargs) print("После вызова функции") return result return wrapper ``` - **Класс** (если он реализует метод `__call__`): ``` class DecoratorClass: def __init__(self, func): self.func = func def __call__(self, *args, **kwargs): print("Декоратор-класс") return self.func(*args, **kwargs) ``` - **Метод класса** (если используется с `@classmethod` или `@staticmethod`) - **Лямбда-функция** (но с ограничениями, так как может содержать только одно выражение) Декоратор должен принимать функцию и возвращать функцию (или другой вызываемый объект). В Python 3.9+ также можно использовать `@` с любым выражением, которое вычисляется в декоратор.