Middle — Middle+
99
Kaip galima naudoti Dekoratoriaus šabloną objektų orientuoto programavimo kontekste be funkcijos ar metodo tiesioginio keitimo?
Atsakymas iš AI
sobes.tech AI
Шаблон Декоратор позволяет динамически расширять функциональность объекта без изменения его исходного кода. В 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 не меняется, но благодаря декоратору её поведение расширяется. Такой подход позволяет добавлять функциональность (например, кэширование, проверку прав, логирование) без изменения исходного кода функций или методов.