Патерн «Декоратор»
Коротко: Патерн «Декоратор» розширює об’єкт додатковими функціями, обгортаючи його в об’єкт-обгортку з тим самим інтерфейсом, — без зміни класу й успадкування від нього.
Докладніше: Кілька декораторів можна вкладати один в одного, наприклад журналювання, кешування, перевірка прав і вимірювання часу навколо однієї функції. У Python для цього є власний синтаксис (@decorator), у JavaScript/TypeScript — декоратори для класів, Java застосовує його з потоками (new BufferedReader(new FileReader(...))).
Подробиці
import time
from functools import wraДив. також: функція вищого порядку, анотації, патерн «Стратегія», успадкування