上一篇中我对学习过程中的装饰器进行了总结和整理,这一节简单整理下类装饰器

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__方法相关推荐

  1. python装饰器_Python基础-装饰器

    作者:Zarten知乎专栏:Python基础深入详解知乎ID: Zarten简介: 互联网一线工作者,尊重原创并欢迎评论留言指出不足之处,也希望多些关注和点赞是给作者最好的鼓励 ! 概述 装饰器其实就 ...

  2. python装饰器模式带参数_python函数装饰器、类装饰器和带参数的装饰器——装饰器模式...

    装饰器模式: 动态地给对象添加一些额外的职责,就增加功能来说,装饰模式比生产子类更加灵活 Component 是定义一个对象接口,可以给这些对象动态地添加职责.concreteComponent是定义 ...

  3. python函数装饰函数_Python精进-装饰器与函数对象

    本文为<爬着学Python>系列第四篇文章. 从本篇开始,本专栏在顺序更新的基础上,会有不规则的更新. 在Python的学习与运用中,我们迟早会遇到装饰器,这个概念对于初识装饰器的新手来说 ...

  4. python 动态添加装饰器_python动态装饰器

    python的装饰器是静态的,也就是说你使用的装饰器一定是定义好的对象.在某些特殊的情况下,需要让动态使用装饰器. 警告 不要随便用这个办法,一点都不优雅,能够使用其他的方法规避动态调用装饰器就不要这 ...

  5. python装饰器类-Python 装饰器、类装饰器、属性装饰器

    今天来介绍一下python的装饰器. 1.首先来介绍一下简单的装饰器, def play(): return "i can play" if __name__ == '__main ...

  6. python 函数装饰器_python函数装饰器的用法

    函数装饰器: 开闭原则:在面向对象编程领域中,开闭原则规定"软件中的对象(类,模块,函数等等)应该对于扩展是开放的, 但是对于修改是封闭的",这意味着一个实体是允许在不改变它的源代 ...

  7. python函数修饰器_Python函数装饰器指南

    Python 具有强大的功能和富有表现力的语法.我最喜欢的装饰之一.在设计模式的上下文中,装饰器动态更改方法或类功能,而不必直接使用子类.当您需要扩展功能,但不想修改原函数时,这是理想的选择.我们可以 ...

  8. python3层装饰器_python三层装饰器python字符串,数值计算

    Python是一种面向对象的语言,但它不像C++一样把标准类都封装到库中,而是进行了进一步的封装,语言本身就集成一些类和函数,比如print,list,dict etc. 给编程带来很大的便捷 Pyt ...

  9. Python:闭包(简介、使用方法、nonlocal修改闭包内使用的外部变量)、装饰器(定义、作用、通用装饰器、多个装饰器、带参数的装饰器、类装饰器、装饰器方式添加WEB框架的路由)

    一.闭包的介绍 闭包可以保存函数内的变量 当闭包执行完毕,外部函数的变量才释放. # 闭包的作用:可以保存外部函数的变量 # 闭包的形成条件 # 1.函数嵌套 # 2.内部函数使用了外部函数的变量或者 ...

最新文章

  1. TextRNN用于文本分类
  2. Windows上打开大文件的工具
  3. python中变量类型在程序中可以改变_python的可变与不可变数据类型
  4. CF1131 G. Most Dangerous Shark(DP+单调栈优化)
  5. 代理模式(多线程实现状态监控)
  6. MaxCompute full outer join改写left anti join实践
  7. csuoj 1351: Tree Counting
  8. 移动端报表JS开发演示样例
  9. 深入理解“智慧城市”
  10. 【文献笔记】【精读】Near-Ultrasound Communication for TV’s 2nd Screen Services
  11. python 死循环捕捉输入异常
  12. 为企业微信“服务商应用”更改微信插件中的消息弹出样式
  13. Linux 服务器一键测速脚本工具:GreenBench
  14. 招聘移动全栈工程师(iOS 方向)
  15. 炒鸡详细的windows安装python教程
  16. excel计算二元线性回归_分享一个用用Excel做回归分析
  17. 设计 一个高性能爬虫系统
  18. Linux不是Windows(转载,强烈推荐)
  19. SAP 发送外部邮件(增加到邮件队列)
  20. 机械工程师和电气工程师方向哪个前景比较好?

热门文章

  1. java sqlserver 2000_谁能救救我啊,关于JAVA连接SQLserver2000
  2. Python实现图片压缩
  3. Python中的itertools.product
  4. python网络编程:UDP方式传输数据
  5. Python执行系统命令的四种方法
  6. python一些常用函数_【python】常用的一些内置函数
  7. python sorted原理_Python sort()和sorted()
  8. ubuntu docker用mount或volume与windows共享文件(samba)(设置共享ip地址)
  9. linux ubuntu16.04 Clion 安装及快捷方式创建
  10. SpringMVC(SSM)框架搭建JavaWeb项目时,前端页面文件上传,后台Java下载功能实现及相关问题记录说明