首页 > 编程语言 > 详细

50 Python - 装饰器 类定义装饰器

时间:2019-07-10 19:56:38      阅读:116      评论:0      收藏:0      [点我收藏+]

04 类定义装饰器

      上节通过函数定义装饰器,本节通过类定义装饰器

001 定义类装饰器

定义一个类,类里面两个函数,一个构造函数init(),一个调用函数call()

构造函数init时候,传递一个函数func()进来

      调用函数call(),用于装饰传递进来的函数

用装饰器类P修饰get_text()函数

 技术分享图片

 

用装饰器类P修饰get_upper_text()函数

 技术分享图片

 

002 函数定义的装饰器和类定义装饰器区别

      函数定义装饰器:即可以用在普通函数上面,也可以用在类里面的方法上面

      类定义装饰器,可以用在普通函数上,但是用在其他类的方法上可能会有问题

(1)

 技术分享图片

 

调用

 技术分享图片

 结果

 技术分享图片

 

 

 技术分享图片

 调用

 技术分享图片

 结果

 技术分享图片

 

原因是,我们定义装饰器时候用到了一个参数self,然后当你传递一个student实例时候,student实例里面也有一个self,这样就起了冲突,不清楚self给谁用,其实是给装饰器用的

该问题该如何解决,可以解决但较复杂,可以自己研究,建议两种装饰器的定义根据情况选择,个人建议使用函数定义就可以了。

如下图,装饰器类里面有sslf,学生类里面也有self

 技术分享图片

 

50 Python - 装饰器 类定义装饰器

原文:https://www.cnblogs.com/yijiexi/p/11165833.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!