python装饰器测试_python装饰器

一、了解下python装饰器

python的一个函数,可以让其他函数在不改动时获得更多的功能。我目前接触到的无非是:插入日志、性能测试等等,使用解释器可以提取“公因式”,不同的功能有不同的“系数”

套用个通用的说法,可以给被装饰的对象(对象或函数)添加额外的功能~~~~

二、语法

咋用装饰器?

使用 @语法糖

@testdeftest_case()print “pass”

例子中,还缺少一个test函数的定义,这里先不写。

如果有传参的需求,python支持可变参数和关键字参数的,这就很灵活,test函数里可以定义好,这样可以灵活使用了。

可以通过装饰器的参数来禁止或者允许是否使用装饰器功能(如定义时加入开关参数)

三、更高阶的用法

基本的懂了,看一些高阶用法

1、python内置的装饰器

有三个,类静态方法,类方法和属性方法

(插播下区别:静态方法:不需创建对象,类直接调用,不会隐式传递self(所以使用时参数个数必须与定义的个数保持一致,否则报错)

类方法:self是类本身,调用方法传的值必须是类的公有属性

属性方法:变为私有属性,比如某个属性值通过一系列动作才返回结果,但过程不需了解,只需调用属性------如果需要修改属性,需要使用@property.setter再次装饰)(几种方法的描述可参考:https://www.cnblogs.com/revo/p/7381101.html)

属性有3个装饰器:setter , getter , deleter 都是在property的基础上做了封装,经过property装饰的函数返回不再是个函数,而是个property对象

四、其他

1、多个装饰器的顺序

多个装饰器同时使用时,装饰器的调用顺序与@语法糖声明的顺序相反,最后执行函数本身;

需要注意内函数和外函数之间的语句不会装饰到目标函数上,并且装饰器返回函数

可参考链接:https://blog.csdn.net/xiangxianghehe/article/details/77170585 (评论的内容完美解释了问题,赞)

五、优缺点

1、优点:优雅,减少重复

2、引入的问题(缺点):

(1)位置错误可能引起异常

(2)错误的函数名和文档

(3)装饰器不可以用在静态方法和类方法上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值