装饰器&装饰类
时间:2020-05-30
本文章向大家介绍装饰器&装饰类,主要包括装饰器&装饰类使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
装饰器例子:
1 import time 2 3 def math_type(type = ''): 4 def decorator_time(math_closure): 5 def new_func(*args, **argss): 6 print(type) 7 start = time.time() 8 print(time.time()) 9 result = math_closure(*args, **argss)#返回math_method 10 print(result(type))#调用math_method 11 end = time.time() 12 print(end) 13 print(end-start) 14 return result 15 return new_func 16 return decorator_time 17 18 @ math_type('add') 19 def math_closure_return(*args, **argss): 20 def math_method(x): 21 if x=='add': 22 print(type(args)) 23 sum = 0 24 for i in args: 25 sum += i 26 for key in argss.keys(): 27 sum += argss[key] 28 return sum 29 if x=='minu': 30 sum = 0 31 for i in args: 32 sum -= i 33 for key in argss.keys(): 34 sum -= argss[key] 35 return sum 36 return math_method 37 fun = math_closure_return(12,3,a=5,b=3)#返回math_method 38 print(fun('minu')) 39 #带参装饰器 40 def math_type(type = ''): 41 def deco_time(math_closure): 42 def new_func(*args, **argss): 43 print(type) 44 start = time.time() 45 print(time.time()) 46 print('start') 47 return_math_method = math_closure(*args, **argss)#返回的是math_method函数 48 return_math_method(type)#调用math_method 49 print('end') 50 end = time.time() 51 print(end) 52 print(end-start) 53 return return_math_method 54 return new_func 55 return deco_time 56 57 @ math_type('add') 58 def math_closure_print(*args, **argss): 59 time.sleep(1) 60 def math_method(x): 61 if x=='add': 62 print(type(args)) 63 sum = 0 64 for i in args: 65 sum += i 66 for key in argss.keys(): 67 sum += argss[key] 68 print(sum) 69 if x=='minu': 70 sum = 0 71 for i in args: 72 sum -= i 73 for key in argss.keys(): 74 sum -= argss[key] 75 print(sum) 76 return math_method 77 fun = math_closure_print(12,3,a=5,b=3) 78 #fun('minu')#有此句则多调用一次math_method('minu')
装饰类例子:
1 def decorate_class(SomeClass):#函数 2 class NewClass(): 3 def __init__(self,age): 4 self.total_display = 0#新增对象属性 5 self.wrapped = SomeClass(age)#新增对象属性,属性名随意,记录原类生成的对象 6 def display(self): 7 self.total_display += 1 8 print(f'total display:{self.total_display}') 9 self.wrapped.display() 10 return NewClass 11 12 @decorate_class 13 class Bird: 14 def __init__(self,age): 15 self.age = age 16 def display(self): 17 print(f'My age is:{self.age}') 18 eagle_lord = Bird(5) 19 for i in range(3): 20 eagle_lord.display()
原文地址:https://www.cnblogs.com/gloria5/p/12993746.html
- 采访Philipp Crocoll:安卓平台上整合Java和C#
- “AS3.0高级动画编程”学习:第一章高级碰撞检测
- AI分析师PK人类分析师,结果竟然是……
- 纯代码修改WordPress 默认 Gravatar 头像的方法
- 这些行业的饭碗要被机器人抢了 再不努力就被它们PK掉了!
- DeveWork.com 上线“前端工具箱”(附源码下载)
- Debug和Release之本质区别
- ArgoUML -- 开源UML 建模工具
- 性能分析工具-PerfView
- c#测试字符串是否为GUID的几种方法
- 编译错误CS1595
- 分享一款带尖角浮出 公告栏 样式
- 在asp.net页面上得到Castle容器的实例
- WordPress自带TinyMCE编辑器相关功能增强
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android网络技术HttpURLConnection详解
- Ubuntu16.04下CUDA8.0和CUDA9.0共存
- Ubuntu 20.04 开启隐藏录音降噪功能(推荐)
- 解密 Linux 版本信息的方法
- ubuntu20.04连接wifi的方法(2种)
- 服务器Centos部署MySql并连接Navicat过程详解
- Android横竖屏幕切换生命周期详解
- LINUX中如何查看某个端口是否被占用的方法
- Android实现RecyclerView添加分割线的简便方法
- Android定时器Timer的停止和重启实现代码
- Ubuntu20.04开启root账户的方法步骤
- Android 将view 转换为Bitmap出现空指针问题解决办法
- Android ScrollView 下嵌套 ListView 或 GridView出现问题解决办法
- Ubuntu 安装cuda10.1驱动的实现步骤
- Android单例模式的几种方法总结