from time import time
class 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