python 类方法装饰器_python类装饰器即__call__方法
上一篇中我对学习过程中的装饰器进行了总结和整理,这一节简单整理下类装饰器
1.类中的__call__方法:
我们在定义好一个类后,实例化出一个对象,如果对这个对象以直接在后边加括号的方式进行调用,程序就会报错。也就是在类中这种做法是错误的;
而,如果一个类中写入了__call__方法,当我问在对实例对象以括号的方式进行调用时,__call__方法中的语句就会被执行,代码如下:
1 importtime2 #定义一个Time类
3 classTime(object):4 def __init__(self,a):5 self.a =a6 def __call__(self, *args, **kwargs):7 print(self.a )8 #对类进行实例化
9 now =time.ctime()10 c =Time(now)11 #调用类中的call方法
12 c()13 #结果为:Tue Jun 12 17:28:53 2018
2.类作为装饰器的底层原理和上一篇中所谈到的是一致的,以下边代码为示例:
#定义一个Time类
classTime(object):def __init__(self,func): #注意这里要设定参数接收Test
self._func =funcdef __call__(self):print('我可以对函数进行装饰')print("----------------------------")
self._func()
@Time#等价于 Test = Time(Test)
defTest():print('测试一下可不可以.')
Test()#结果为:#我可以对函数进行装饰#----------------------------#测试一下可不可以.
python 类方法装饰器_python类装饰器即__call__方法相关推荐
- python装饰器_Python基础-装饰器
作者:Zarten知乎专栏:Python基础深入详解知乎ID: Zarten简介: 互联网一线工作者,尊重原创并欢迎评论留言指出不足之处,也希望多些关注和点赞是给作者最好的鼓励 ! 概述 装饰器其实就 ...
- python装饰器模式带参数_python函数装饰器、类装饰器和带参数的装饰器——装饰器模式...
装饰器模式: 动态地给对象添加一些额外的职责,就增加功能来说,装饰模式比生产子类更加灵活 Component 是定义一个对象接口,可以给这些对象动态地添加职责.concreteComponent是定义 ...
- python函数装饰函数_Python精进-装饰器与函数对象
本文为<爬着学Python>系列第四篇文章. 从本篇开始,本专栏在顺序更新的基础上,会有不规则的更新. 在Python的学习与运用中,我们迟早会遇到装饰器,这个概念对于初识装饰器的新手来说 ...
- python 动态添加装饰器_python动态装饰器
python的装饰器是静态的,也就是说你使用的装饰器一定是定义好的对象.在某些特殊的情况下,需要让动态使用装饰器. 警告 不要随便用这个办法,一点都不优雅,能够使用其他的方法规避动态调用装饰器就不要这 ...
- python装饰器类-Python 装饰器、类装饰器、属性装饰器
今天来介绍一下python的装饰器. 1.首先来介绍一下简单的装饰器, def play(): return "i can play" if __name__ == '__main ...
- python 函数装饰器_python函数装饰器的用法
函数装饰器: 开闭原则:在面向对象编程领域中,开闭原则规定"软件中的对象(类,模块,函数等等)应该对于扩展是开放的, 但是对于修改是封闭的",这意味着一个实体是允许在不改变它的源代 ...
- python函数修饰器_Python函数装饰器指南
Python 具有强大的功能和富有表现力的语法.我最喜欢的装饰之一.在设计模式的上下文中,装饰器动态更改方法或类功能,而不必直接使用子类.当您需要扩展功能,但不想修改原函数时,这是理想的选择.我们可以 ...
- python3层装饰器_python三层装饰器python字符串,数值计算
Python是一种面向对象的语言,但它不像C++一样把标准类都封装到库中,而是进行了进一步的封装,语言本身就集成一些类和函数,比如print,list,dict etc. 给编程带来很大的便捷 Pyt ...
- Python:闭包(简介、使用方法、nonlocal修改闭包内使用的外部变量)、装饰器(定义、作用、通用装饰器、多个装饰器、带参数的装饰器、类装饰器、装饰器方式添加WEB框架的路由)
一.闭包的介绍 闭包可以保存函数内的变量 当闭包执行完毕,外部函数的变量才释放. # 闭包的作用:可以保存外部函数的变量 # 闭包的形成条件 # 1.函数嵌套 # 2.内部函数使用了外部函数的变量或者 ...
最新文章
- TextRNN用于文本分类
- Windows上打开大文件的工具
- python中变量类型在程序中可以改变_python的可变与不可变数据类型
- CF1131 G. Most Dangerous Shark(DP+单调栈优化)
- 代理模式(多线程实现状态监控)
- MaxCompute full outer join改写left anti join实践
- csuoj 1351: Tree Counting
- 移动端报表JS开发演示样例
- 深入理解“智慧城市”
- 【文献笔记】【精读】Near-Ultrasound Communication for TV’s 2nd Screen Services
- python 死循环捕捉输入异常
- 为企业微信“服务商应用”更改微信插件中的消息弹出样式
- Linux 服务器一键测速脚本工具:GreenBench
- 招聘移动全栈工程师(iOS 方向)
- 炒鸡详细的windows安装python教程
- excel计算二元线性回归_分享一个用用Excel做回归分析
- 设计 一个高性能爬虫系统
- Linux不是Windows(转载,强烈推荐)
- SAP 发送外部邮件(增加到邮件队列)
- 机械工程师和电气工程师方向哪个前景比较好?
热门文章
- java sqlserver 2000_谁能救救我啊,关于JAVA连接SQLserver2000
- Python实现图片压缩
- Python中的itertools.product
- python网络编程:UDP方式传输数据
- Python执行系统命令的四种方法
- python一些常用函数_【python】常用的一些内置函数
- python sorted原理_Python sort()和sorted()
- ubuntu docker用mount或volume与windows共享文件(samba)(设置共享ip地址)
- linux ubuntu16.04 Clion 安装及快捷方式创建
- SpringMVC(SSM)框架搭建JavaWeb项目时,前端页面文件上传,后台Java下载功能实现及相关问题记录说明