类装饰器

打印 上一主题 下一主题

主题 904|帖子 904|积分 2712

2022-09-18
 类装饰器的定义:
  使用一个类作为一个装饰器,在类里面对已有函数添加其他功能。
类装饰器使用的一个实例:
  1. 1 class MyDecorator(object):
  2. 2     def __init__(self,func):
  3. 3         self.__func = func
  4. 4
  5. 5     def __call__(self, *args, **kwargs):
  6. 6         print("课已讲完")
  7. 7         self.__func()
  8. 8
  9. 9 @MyDecorator
  10. 10 def show():
  11. 11     print("快要下课啦")
  12. 12
  13. 13 show()
复制代码
  说明:
    第10-11行,原来的函数
    第1-7行,定义了一个类装饰器,为原来的函数添加其他功能。注意:如果此时是类作为装饰器的话,之前装饰器中传入的函数现在应该放在的位置在“__init__”构造函数中。
    第3行,为了在下面的代码中调用func函数,所以此处要将传入的"func"参数作为一个属性。“self.__func”,在func前面加了两个下划线表示将该func属性作为一个私有属性。
    第5行,为了在下面函数调用中直接使用类对象名调用,使用此处要使用“__call__”,它的目的是将对象作为一个可调用的对象。
    第6行,增加的新的功能。
    第7行,调用“__func()”函数,注意,此处调用的是一个函数,而非上面的属性,因此要加上括号。因为是在类的内部调用的本类传入的参数,所以要使用“self”。
    第9行,类装饰器语法糖,表示给原来的函数增加新的功能。
运行结果图:

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

玛卡巴卡的卡巴卡玛

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表