Junior — Middle
104
Python-да декоратор үлгісін сыныптарға қолдануға бола ма, және оны қалай жүзеге асыруға болады?
Сұралған компаниялар
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()) # Дополнительное поведение
Таким образом, класс-декоратор оборачивает объект и может добавлять новые методы или изменять существующие, сохраняя интерфейс исходного объекта.