class A(object):

    def __del__(self):
        print('DEL')

def a(self):
    pass

def log_all_calls(function):

    def inner(*args, **kwargs):
        print('Calling {}'.format(function))
try:
    return function(*args, **kwargs)
finally:
    print('Called {}'.format(function))
return inner
a = A()
a.a = log_all_calls(a.a)
a.a()
Зачем устанавливать связанный метод для объекта python, создавая циклическую ссылку?