类装饰器

2022-09-18

 类装饰器的定义:

  使用一个类作为一个装饰器,在类里面对已有函数添加其他功能。

类装饰器使用的一个实例:

 1 class MyDecorator(object):
 2     def __init__(self,func):
 3         self.__func = func
 4 
 5     def __call__(self, *args, **kwargs):
 6         print("课已讲完")
 7         self.__func()
 8 
 9 @MyDecorator
10 def show():
11     print("快要下课啦")
12 
13 show()

  说明:

    第10-11行,原来的函数

    第1-7行,定义了一个类装饰器,为原来的函数添加其他功能。注意:如果此时是类作为装饰器的话,之前装饰器中传入的函数现在应该放在的位置在“__init__”构造函数中。

    第3行,为了在下面的代码中调用func函数,所以此处要将传入的"func"参数作为一个属性。“self.__func”,在func前面加了两个下划线表示将该func属性作为一个私有属性。

    第5行,为了在下面函数调用中直接使用类对象名调用,使用此处要使用“__call__”,它的目的是将对象作为一个可调用的对象。

    第6行,增加的新的功能。

    第7行,调用“__func()”函数,注意,此处调用的是一个函数,而非上面的属性,因此要加上括号。因为是在类的内部调用的本类传入的参数,所以要使用“self”。

    第9行,类装饰器语法糖,表示给原来的函数增加新的功能。

运行结果图:

类装饰器

 

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:类装饰器 - Python技术站

(0)
上一篇 2023年4月2日 下午4:57
下一篇 2023年4月2日 下午4:57

相关文章

  • 学习笔记——Django项目中的F对象,Q对象,聚合函数,排序

    2022-09-30 F对象:   在shell中是用于两个有关联的属性之间的查询。 使用实例: 查询书籍表中阅读量大于评论量的记录 前提,进入pycharm,进入虚拟环境,进入shell环境。 首先,要使用F对象,那么就需要导入F对象 from django.db.models import F 后进行查询 BookInfo1.objects.filter…

    Python开发 2023年4月2日
    00
  • 闭包第2天

    2022-09-10 闭包的使用实例 1 def config_name(name): 2 def inner(msg): 3 print(name + “:” + msg) 4 5 print(id(inner)) 6 return inner 7 8 A = config_name(“A”) 9 B = config_name(“B”) 10 A (“有…

    2023年4月2日
    00
  • 装饰器的使用

    2022-09-17 装饰器的使用实例——获得计时函数所用时间: 1 import time 2 # 定义装饰器函数 3 def decorator(fun): 4 def inner(): 5 # 获得开始时间 6 start = time.time() 7 # 执行计时函数 8 fun() 9 # 执行计时函数之后所用的时间 10 end = time.…

    Python开发 2023年4月2日
    00
  • 创建一个Django项目总结

    2022-09-25  首先,要安装好虚拟环境,之后要切换到虚拟环境中,使用的命令 workon 创建好的虚拟环境的名称 之后,创建一个Django项目使用的命令: django-admin startproject 项目名称 进入到该项目的目录下,创建一个子应用,使用的命令: python manage.py startapp 要创建的子应用的名称 其中 …

    Python开发 2023年4月2日
    00
  • Redis与Python连接实例

    2022-09-22 1、 Redis与Python建立连接之前需要先安装“Redis”安装包: 在ubantu中,打开终端,输入命令: sudo pip install redis 此时,是安装Python2.0的版本。 一般来说,是将3.0和2.0的版本都安装,安装3.0的命令: sudo pip3 install redis 2、python与redi…

    2023年4月2日
    00
  • 学习笔记——Django项目中的cookie

    2022-10-05 得到cookie信息的实例联系: 在子应用中的“views.py”文件: from django.http import HttpResponse def get_cookie(request): cookies = request.COOKIES username = cookies.get(‘username’) return Ht…

    Python开发 2023年4月2日
    00
  • 创建Django项目

    2022-09-24 在创建Django项目时,出现了    错误,查了一下,发现要创建一个Django项目,需要先使用命令: python -m pip install pytz 安装一个“时区模块”。一般错误提示中出现“xxx”模块没有发现,大概率是要进行安装一个模块或者其他。 之后创建一个Django项目: django-admin startproj…

    2023年4月2日
    00
  • 学习笔记——Django项目中的过滤器,模板继承

    2022-10-08 过滤器 过滤器的含义:   过滤器即筛选出我们设定需要的,过滤掉我们不需要的数据。 过滤器使用的场景:   例如:在子应用的“views.py”中的一个类中的函数设置了一个请求在浏览器页面显示“组织内容”,例如:在“组织内容”中设置了一个“birthday:datatime.now()”。在“templates”文件夹中的“index.…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部