Что может быть декоратором
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+ также можно использовать `@` с любым выражением, которое вычисляется в декоратор.