Я не уверен, каков ваш вариант использования для этого, но в целом я бы больше подумал о том, что именно является проблемой, которую вы пытаетесь решить.может делать то, что вы хотите, но без декоратора:
#!/usr/bin/env python
import inspect
class Foo(object):
def foo(self):
pass
def bar(self, a, b):
pass
def foobar(self, x, y, z):
pass
def __getattribute__(self, name):
returned = object.__getattribute__(self, name)
if inspect.isfunction(returned) or inspect.ismethod(returned):
print 'called ', returned.__name__
return returned
if __name__ == '__main__':
a = Foo()
a.foo()
a.bar(1, 2)
a.foobar(1, 2, 3)
Вывод:
called foo
called bar
called foobar