Back to questions
Рунити
Junior — Middle
82
Можно ли применять паттерн декоратор к классам в Python, и как это реализовать?
Companies where asked
Answer from AI
sobes.tech AI
Да, в Python паттерн декоратор можно применять к классам. Класс-декоратор — это класс, который принимает другой класс или объект и расширяет или изменяет его поведение, не меняя исходный код.
Пример реализации класс-декоратора:
class Decorator:
def __init__(self, wrapped):
self._wrapped = wrapped
def __getattr__(self, name):
# Делегируем вызовы атрибутов обернутому объекту
return getattr(self._wrapped, name)
def new_method(self):
return "Дополнительное поведение"
class Original:
def original_method(self):
return "Исходное поведение"
obj = Original()
decorated_obj = Decorator(obj)
print(decorated_obj.original_method()) # Исходное поведение
print(decorated_obj.new_method()) # Дополнительное поведение
Таким образом, класс-декоратор оборачивает объект и может добавлять новые методы или изменять существующие, сохраняя интерфейс исходного объекта.