Middle — Middle+
77
Comment peut-on utiliser le modèle Decorateur en programmation orientée objet sans modifier directement la fonction ou la méthode?
Réponse de l'IA
sobes.tech IA
Шаблон Декоратор позволяет динамически расширять функциональность объекта без изменения его исходного кода. В 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 не меняется, но благодаря декоратору её поведение расширяется. Такой подход позволяет добавлять функциональность (например, кэширование, проверку прав, логирование) без изменения исходного кода функций или методов.