Встречается на собеседованиях • сегодня
Можно ли создать декоратор из класса
Да, можно создать декоратор из класса. Для этого класс должен реализовать метод __call__, который будет вызываться при вызове декорированной функции. Также можно использовать класс как декоратор с параметрами, если реализовать __init__ и __call__.
Пример простого декоратора-класса:
python
class Logger:
def __init__(self, func):
self.func = func
text
def __call__(self, *args, **kwargs):
print(f"Calling {self.func.__name__}")
return self.func(*args, **kwargs)@Logger
def add(a, b):
return a + b
print(add(2, 3)) # Выведет: Calling add\n5
text
Пример с параметрами:
```python
class Repeat:
def __init__(self, times):
self.times = times
def __call__(self, func):
def wrapper(*args, **kwargs):
for _ in range(self.times):
result = func(*args, **kwargs)
return result
return wrapper
@Repeat(times=3)
def greet(name):
print(f"Hello, {name}!")
greet("Alice") # Выведет Hello, Alice! 3 разаКлассы-декораторы полезны, когда нужно сохранять состояние между вызовами или реализовать сложную логику декорирования.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы