一、基本应用:
在python里方法也是对象,它可以作为参数传递。
现在有个方法foo,我希望在它运行前后做些事情,那就可以使用decorator了。
# coding=utf-8 # 原方法 def foo(): print 'running' # 修饰方法 def outer(some_func): def inner(): print "before some_func" some_func() print "after some_func" return inner # 修饰foo方法 decorated = outer(foo) # 2 # 运行修饰后的方法 decorated()
输出:
before some_func
running
after some_func
running
after some_func
可以看到我们在没有修改原方法foo()的前提下,修改了foo()运行之前和运行之后的行为。
二、使用@符号简化修饰器应用
# coding=utf-8 # 修饰方法 def NewFoo(some_func): def inner(): print "before some_func" some_func() print "after some_func" return inner # 原方法 @NewFoo def foo(): print 'running' # 运行修饰后的方法 foo()
修改后的代码更清晰简单了,而且foo方法名称都没有改变,行为就改变了。
这里注意:@NewFoo要与修饰方法名称一样,否则不会生效。通过修饰器,python实际调用是这样的:
foo = NewFoo(foo) foo()
三、一个我使用到的案例
假设我们的开发code有多个分支,但测试代码希望只有一份,那就可以在测试代码上定义@dev_branchA_run_only、@dev_branchB_not_run这样的标记来适应多个分支的测试case。
参考:
http://simeonfranklin.com/blog/2012/jul/1/python-decorators-in-12-steps/
http://coolshell.cn/articles/11265.html
http://www.imooc.com/article/1257
--end
相关推荐
NULL 博文链接:https://chuanwang66.iteye.com/blog/1325151
装饰器的运用是Python编程中的一项高级技巧,这里我们由浅入深,整理了12步入门Python中的decorator装饰器使用方法,需要的朋友可以参考下
主要介绍了Python装饰器(decorator)定义与用法,结合具体实例形式详细分析了Python装饰器的概念、功能及相关使用技巧,需要的朋友可以参考下
本文实例讲述了Python使用logging结合decorator模式实现优化日志输出的方法。分享给大家供大家参考,具体如下: python内置的loging模块非常简便易用, 很适合程序运行日志的输出。 而结合python的装饰器模式,则可...
本文实例讲述了Python装饰器decorator用法。分享给大家供大家参考。具体分析如下: 1. 闭包(closure) 闭包是Python所支持的一种特性,它让在非global scope定义的函数可以引用其外围空间中的变量,这些外围空间中...
一、装饰器decorator ... 比较常用的功能一般使用decorator来实现,例如python自带的staticmethod和classmethod。 装饰器有两种形式: 复制代码 代码如下: @A def foo(): pass 相当于: 复制代码 代码如下
由于需要在原有行为基础上添加新功能,此时父类的方法应该为虚方法,例如用户登录行为:publicclassUser{publicvirtualvoidSignIn(){Console.WriteLine("TheUserSignIn.");}}如果需要为用户登录行为增加权限验证的
超时装饰器安装从源代码: python setup.py install从pypi: pip install timeout-decorator用法import timeimport timeout_decorator@timeout_decorator.timeout(5)def mytest(): print("Start") for i in range(1,...
demo python使用装饰器(Decorator)的方式实现单例模式 functools.wraps 则可以将原函数对象的指定属性复制给包装函数对象, 默认有 __module__、__name__、__doc__,或者通过参数选择
主要介绍了Python中设计模式之Decorator装饰器模式模式,文中详细地讲解了装饰对象的相关加锁问题,需要的朋友可以参考下
资源分类:Python库 所属语言:Python 资源全名:drf_nested_decorator-0.3-py2-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
什么是Python中的装饰器(Decorator)?如何使用装饰器? Python中的生成器(Generator)是什么?如何创建和使用生成器? 什么是Python中的迭代器(Iterator)和可迭代对象(Iterable)? Python中如何处理异常...
Decorator 与 Python 之前引入的元编程抽象有着某些共同之处:即使没有这些技术,您也一样可以实现它们所提供的功能。正如 Michele Simionato 和我在 可爱的 Python 专栏的早期文章 中指出的那样,即使在 Python 1.5...
资源分类:Python库 所属语言:Python 资源全名:cache_decorator-1.2.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
python中完善decorator共5页.pdf.zip