【发布时间】:2020-02-13 07:31:32
【问题描述】:
我正在尝试打印出实例每次调用函数时实例调用的函数名称和参数
我正在使用 getattribute 方法来实现这个,我的代码在下面
def __getattribute__(self, attr):
def newfunc(*args, **kwargs):
print( "%r Calling %r with %r %r" % (self, attr, args, kwargs))
return newfunc
代码确实打印出函数的名称和参数,但没有执行 origin 方法,因为它返回一个新函数而不是调用旧函数。
我做了一些搜索,比如question,这个答案中的最高投票使用 dict 在字典中通过函数名检索函数,我试过了,但它导致递归称呼。
我的问题是。有没有办法在 __getattribute__method 中打印出函数的名称和参数?
或者有没有办法在每次实例调用其方法时打印出函数的名称和参数?
附言。除了使用装饰器,我知道我可以为此使用装饰器,但我不想把装饰器放在我使用的每个方法前面
【问题讨论】: