from time import timeclass P: @staticmethod def timing(func): # 这里的func 代指真正调用的函数对象, def _decorator(obj): #obj 代指 上述函数对象携带的参数,其实代指 原函数中的self实例 print obj # 查看调用对象示例 print("begin download %s of region: %s" % (obj.name, obj.region)) # 给出提示信息 time0 = time() # 开始计时 func(self) #真正执行 print("finish download %s of region: %s. Time cost : %.2f" % (obj.name, obj.region, (time() - time0))) return _decorator class Son(P): @P.timing def download(self): ......s = Son()s.download() #会计时的
程序实现简单的为方法计时的 decorator 方式,并且是类对象内部的实现。在网上通常看到的是方法外面的实现。
参考 http://www.wklken.me/posts/2012/10/27/python-base-decorator.html#nei-zhi-zhuang-shi-qi
http://www.cnblogs.com/Jerry-Chou/archive/2012/05/23/python-decorator-explain.html