用Pythonfunctools.wraps实现装饰器_阿- functools

Python装饰器(decorator)在实现的时候,有一些细节需要被注意。例如,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变)。这样有时候会对程序造成一些不便,例如笔者想对unittest框架中的一些函数添加自定义的decorator,添加后由于函数名和函数的doc发生了改变,对测试结果有一些影响。

所以,Python的functools包中提供了一个叫wraps的decorator来消除这样的副作用。写一个decorator的时候,最好在实现之前加上functools的wrap,它能保留原有函数的名称和docstring。例如:

test_decorator.py

#-*-coding=utf-8-*-

fromfunctoolsimportwraps

defmy_decorator(func):

@wraps(func)

defwrapper(*args,**kwargs):

print('Callingdecoratedfunction...')

returnfunc(*args,**kwargs)

returnwrapper@my_decorator

defexample():

"""Docstring"""

print('Calledexamplefunction')

print(example.__name__,example.__doc__)

打印出:exampleDocstring

  

爱华网本文地址 » http://www.aihuau.com/a/25101015/285091.html

更多阅读

卷发器怎么用?图解卷发器的使用方法 卷发器的使用方法图解

卷发器怎么用?图解卷发器的使用方法——简介很多MM都有卷发情结,漂亮的卷发成了众多爱美女士的追求,对于爱美的MM们来说,卷发器已经成为了可以自己动手打造百变造型的重要家电产品。不用去发廊就可以自己做出漂亮的卷发,下面就跟随小编一

自制简易打蛋器 用筷子自制打蛋器

自制简易打蛋器——简介大家用筷子打鸡蛋1个2个还可以,单鸡蛋多了就麻烦起来了,今天教大家一款简单的打蛋器自制简易打蛋器——工具/原料易拉罐,小电机一个,电池(能带动就行,具体自己选择,我用的锂电池)自制简易打蛋器——方法/步骤自制

电子密码器怎么用 工银电子密码器干嘛的

电子密码器怎么用——简介当我们开通了中国工商银行个人网上银行的时候,如果我们申请的是电子密码器,那么当我们进行转账汇款或者是大额金额支付的时候,可以用电子密码器进行验证码的输入,来达到安全验证我们的资金的流转问题,好了,接下来

海绵卷发器怎么用 精 海绵卷发器哪种好用

海绵卷发器怎么用 精——简介烫过头发,虽然很好看,但是一直存在一件最麻烦的事情就是不懂打理卷发,今天小编教大家如何用海绵卷发器打理卷发。海绵卷发器怎么用 精——工具/原料海绵卷发器 海绵卷发器怎么用 精——方法/步骤海绵卷发

电动脱毛器好用吗 女士电动脱毛器

电动脱毛器好用吗——简介美丽的夏天,怎么能让不雅的体毛带来尴尬呢,有关电动脱毛器好用吗,大部分网友在选择女士脱毛器的时候,都会提问“电动脱毛器好用吗”等等相似的问题。下让我们了解下电动脱毛器好用吗电动脱毛器好用吗——方法/

声明:《用Pythonfunctools.wraps实现装饰器_阿- functools》为网友爱眼爱演碍眼分享!如侵犯到您的合法权益请联系我们删除