蒹葭苍苍,白露为霜。
所谓伊人,在水一方。

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


04 类定义装饰器

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

001 定义类装饰器

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

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

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

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

 

 

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

 

 

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

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

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

(1)

 

 

调用

 

 结果

 

 

 

 

 调用

 

 结果

 

 

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

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

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

 

 

赞(0) 打赏
未经允许不得转载:酷居科技 » Python - 装饰器 类定义装饰器-50

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

锦瑟无端五十弦,一弦一柱思华年

酷居科技联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏