Middle — Middle+
97
Wie kann man das Decorator-Muster in der objektorientierten Programmierung verwenden, ohne die Funktion oder Methode direkt zu ändern?
Antwort von AI
sobes.tech KI
Шаблон Декоратор позволяет динамически расширять функциональность объекта без изменения его исходного кода. В Python это часто реализуется с помощью функций-декораторов, которые принимают функцию или метод и возвращают новую функцию с дополнительным поведением.
Пример использования декоратора для логирования вызовов функции:
def log_decorator(func):
def wrapper(*args, **kwargs):
print(f"Вызов функции {func.__name__} с аргументами {args} и {kwargs}")
result = func(*args, **kwargs)
print(f"Функция {func.__name__} вернула {result}")
return result
return wrapper
@log_decorator
def multiply(a, b):
return a * b
multiply(3, 4)
Здесь исходная функция multiply не меняется, но благодаря декоратору её поведение расширяется. Такой подход позволяет добавлять функциональность (например, кэширование, проверку прав, логирование) без изменения исходного кода функций или методов.