设为首页 加入收藏

TOP

Python 装饰器学习以及实际使用场景实践(二)
2015-07-16 12:55:47 来源: 作者: 【 】 浏览:63
Tags:Python 装饰 学习 以及 实际 使用 场景 实践
实现acquire和release静态方法'''
? ? def _deco(func):
? ? ? ? def __deco():
? ? ? ? ? ? print("before %s called [%s]." % (func.__name__, cls))
? ? ? ? ? ? cls.acquire()
? ? ? ? ? ? try:
? ? ? ? ? ? ? ? return func()
? ? ? ? ? ? finally:
? ? ? ? ? ? ? ? cls.release()
? ? ? ? return __deco
? ? return _deco
?
@deco(locker)
def myfunc():
? ? print(" myfunc() called.")
?
myfunc()
myfunc()


输出为:
before myfunc called [__main__.locker].
locker.acquire() called.(this is staticmethon)
myfunc() called.
? locker.release() called.(do't need object )


before myfunc called [__main__.locker].
locker.acquire() called.(this is staticmethon)
myfunc() called.
? locker.release() called.(do't need object )


装饰器总结


当我们对某个方法应用了装饰方法后, 其实就改变了被装饰函数名称所引用的函数代码块入口点,使其重新指向了由装饰方法所返回的函数入口点。由此我们可以用decorator改变某个原有函数的功能,添加各种操作,或者完全改变原有实现。


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇哪些因素影响Java调用的性能? 下一篇Python 多线程就这么简单

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: