类装饰器

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

相关文章

  • 带有参数的装饰器

    2022-09-18 带有参数的装饰器的实质:   因为装饰器是不能在带有参数,所以要定义带有参数的装饰器应该换一种思路。在装饰器的外面套一个函数,使用该函数返回这个装饰器。 带有参数的装饰器的实例: 1 # 装饰器 2 def return_decorator(flag): 3 def decorator(func): 4 def inner(a,b): …

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

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

    Python开发 2023年4月2日
    00
  • 学习笔记——Django项目中的请求

    2022-10-03 url中的位置参数  位置参数存放的位置   是子应用中的自定义的“urls.py”文件中的路由中。 位置参数的设置:   如果位置参数很多,那么在自定义中的路由文件中可以使用正则表达式。位置参数就是在浏览器搜索中对应的关键词时,能够跳转到相应的界面。界面内容的设置是在子应用的“views.py”页面中。 子应用中的“urls.py”文…

    Python开发 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
  • 学习笔记——美多商城——1 美多商城项目准备

    2022-10-23 步骤: 一、创建工程仓库 (1)在“码云”上创建一个仓库,在本地盘符中创建一个文件夹,右击,使用git,将远程仓库的内容克隆到本地仓库中,点击“Git Bash Here”。将刚刚创建的远程仓库克隆,使用的命令是“git clone 刚刚远程仓库的地址(点击(克隆/下载)按钮会出现一个网址)”。之后,系统会弹出弹框,要求输入Gitee中…

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

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

    Python开发 2023年4月2日
    00
  • 学习笔记——Django项目的删除数据、查询数据(filter、get、exclude)

    2022-09-30 删除数据: 方式一: 打开pycharm,进入虚拟环境,进入shell环境(python manage.py shell)。 删除数据,接上面的笔记——“学习笔记——Django项目的新增数据、修改数据” 导入模块: from book.models import BookInfo1 查找到要删除的数据: book = BookInfo…

    2023年4月2日
    00
  • Django项目中的数据库引擎的修改注意点以及级联删除的设置

    2022-09-29 问题描述: 在“setting.py”的配置文件中修改数据库引擎中,将系统默认的”sqlite3″后缀改为了“sql”。出现问题。 原因分析:    问题查看:  修改后:    —————————————— 上述问题修改后,在“setting”中设置数据库的其他内容(主机、端口、…

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