Всем привет! В прошлой статье мы начали разбирать декораторы в python, изучили что такое декоратор, как его использовать и даже написали свой собственный декоратор. Сегодня, я собираюсь погрузиться еще глубже и показать всю мощь декораторов. В прошлой статье мы не затронули две важные темы: 1 - Декорирование методов класса Известно, что функция и метод в python это почти одно и тоже, разница лишь в том, что метод первым аргументом ожидает "self" - то есть ссылку на объект. В этом случае у нас есть два варианта как передать аргумент функции в декоратор. На изображении выше видим два декоратора, начнем с add_greeting_1 - мы передаем аргумент self чтобы была возможность декорировать метод, однако если мы захотим использовать этот декоратор для обычной функции то получим ошибку(. А как же писать универсальный декоратор ? Следующий декоратор - add_greeting_2. Он универсален, подойдет как для функций так и для методов класса. Рассмотрим более детально функцию обертку("wrapper"), она при