Сообщить об ошибке.

Декораторы методов класса в Python

Одна из отличительных особенностей Python заключается в том, что методы и функции на самом деле одинаковы. Единственное отличие состоит в том, что методы ожидают, что их первый аргумент является ссылкой на текущий объект self.

Это означает, что можно построить декоратор для методов класса на основе шаблона декоратора общего назначения!

import functools

def decorate_method(method):
    def wrapper(*args, **kwargs):
        # уменьшает возраст еще больше
        lie = args[1] - 3
        args = [args[0], lie]
        return method(*args, **kwargs)
    return wrapper


class Lucy():
    def __init__(self):
        self.age = 32
        
    @decorate_method
    def sayYourAge(self, lie):
        print(f'Мне {self.age + lie} лет, что ты об этом думаешь?')

l = Lucy()
l.sayYourAge(-3)
# Мне 26 лет, что ты об этом думаешь?