Sobes.tech
Junior — Middle

Bir sınıfın başka bir sınıfın işlevselliğini dekoratör deseni kullanarak genişletmesi mümkün mü?

sobes.tech yapay zeka

AI'dan gelen yanıt

Да, паттерн декоратор позволяет расширить функциональность существующего класса без изменения его кода, оборачивая объект этого класса в другой объект-декоратор. В Python это часто реализуется через класс, который принимает объект базового класса и переопределяет нужные методы, добавляя новое поведение.

Пример:

class Component:
    def operation(self):
        return "Component"

class Decorator:
    def __init__(self, component):
        self._component = component

    def operation(self):
        return f"Decorator({self._component.operation()})"

# Использование
component = Component()
decorated = Decorator(component)
print(decorated.operation())  # Выведет: Decorator(Component)

Таким образом, класс-декоратор расширяет функциональность базового класса, не наследуясь от него напрямую, а используя композицию.