特定のメソッドを呼び出す直前に引数付き関数のラッパーメソッドを呼び出したい。したがって、メソッドを上書きする必要があると思い__getattribute__
ます。
コードの例を次に示します。
def wrapper(func):
return func * 2
class A(object):
def test(self, arg):
return arg + 1
def __getattribute__(self, name):
if name in ['test']:
return wrapper(super(A, self).__getattribute__(name))
return super(A, self).__getattribute__(name)
問題は、値を返すときに getattribute が呼び出されるtest
ことです。私が欲しいのはtest
、引数でキャッチして、次のようにラッパーメソッドを定義できるようにすることです:
def wrapper(func, *args, **kwargs):
print "do some stuff"
return func(*args, **kwargs)