Декоратор (паттерн)
Структурный паттерн «Банды четырёх»: объект оборачивается в другой, который добавляет поведение, не трогая исходный класс.
Классический пример — BufferedReader(FileReader(...)): каждая обёртка добавляет своё (буферизацию, gzip, шифрование). Синтаксис @decorator в Python — языковая поддержка той же идеи, применяемая в момент определения.
Лучше наследования, когда возможности нужно комбинировать во время выполнения. Риск: глубокие цепочки обёрток трудно отлаживать. Типичные места: потоки ввода-вывода, стеки middleware (Express, ASP.NET), АОП.