Sobes.tech
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())       # Дополнительное поведение

Таким образом, класс-декоратор оборачивает объект и может добавлять новые методы или изменять существующие, сохраняя интерфейс исходного объекта.