我想在调用特定方法之前使用参数调用函数的包装器方法。所以我想我必须覆盖__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)