Junior — Middle
96
Können Sie erklären, was das Muster 'Decorator' in der Programmierung bedeutet und wie es verwendet wird?
Unternehmen wurden gefragt
Soft Media Group
Antwort von AI
sobes.tech KI
Паттерн "декоратор" в программировании позволяет динамически добавлять объектам новые обязанности, оборачивая их в другие объекты-декораторы, не изменяя исходный класс.
В Python декораторы часто реализуются как функции или классы, которые принимают объект (или функцию) и возвращают обёртку с дополнительным поведением.
Пример использования декоратора для функции:
def decorator(func):
def wrapper(*args, **kwargs):
print("До вызова функции")
result = func(*args, **kwargs)
print("После вызова функции")
return result
return wrapper
@decorator
def say_hello():
print("Привет!")
say_hello()
Здесь say_hello оборачивается в wrapper, который добавляет вывод сообщений до и после вызова.
В объектно-ориентированном подходе декоратор — это класс, который содержит ссылку на объект того же интерфейса и расширяет его поведение, например:
class Component:
def operation(self):
pass
class ConcreteComponent(Component):
def operation(self):
print("Основная операция")
class Decorator(Component):
def __init__(self, component):
self._component = component
def operation(self):
print("Дополнительное поведение до")
self._component.operation()
print("Дополнительное поведение после")
component = ConcreteComponent()
decorated = Decorator(component)
decorated.operation()
Таким образом, декоратор позволяет расширять функциональность без изменения исходного кода.