计算另一个方法中的python方法调用

计算另一个方法中的python方法调用,第1张

计算另一个方法中的python方法调用

听起来几乎像是装饰工的教科书示例!

def counted(fn):    def wrapper(*args, **kwargs):        wrapper.called += 1        return fn(*args, **kwargs)    wrapper.called = 0    wrapper.__name__ = fn.__name__    return wrapper@counteddef foo():    return>>> foo()>>> foo.called1

您甚至可以使用另一个装饰器来自动记录一个函数在另一个函数中被调用多少次:

def counting(other):    def decorator(fn):        def wrapper(*args, **kwargs): other.called = 0 try:     return fn(*args, **kwargs) finally:     print '%s was called %i times' % (other.__name__, other.called)        wrapper.__name__ = fn.__name__        return wrapper    return decorator@counting(foo)def bar():    foo()    foo()>>> bar()foo was called 2 times

但是,如果最终

foo
还是
bar
可以自称,那么您将需要一个涉及堆栈的更复杂的解决方案来应对递归。然后,您将走向全面的探查器…

如果您仍在“自学Python”,可能是这种包装好的装饰器材料(通常用于魔术)不是理想的选择!



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5652853.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存