Sobes.tech
Junior — Middle
130

Is het mogelijk om het decoratormodel toe te passen op klassen in Python, en hoe implementeer je dat?

Bedrijven waar gevraagd werd
РунитиРунити

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

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