
Python:funtools模块、覆盖被装饰的函数模块名、名称、限定名、文档、参数注解
发布日期:2021-05-07 14:08:02
浏览次数:17
分类:原创文章
本文共 1511 字,大约阅读时间需要 5 分钟。
update_wrapper
def update_wrapper(wrapper, wrapped,assigned = WRAPPER_ASSIGNMENTS,updated = WRAPPER_UPDATES):
- 类似copy_properties功能
- wrapper 包装函数、被更新者,wrapped 被包装函数、数据源
- 元组WRAPPER_ASSIGNMENTS中是要被覆盖的属性【'__module__', '__name__', '__qualname__', '__doc__', '__annotations__'】模块名、名称、限定名、文档、参数注解
- 元组WRAPPER_UPDATES中是要被更新的属性,__dict__属性字典
- 增加一个__wrapped__属性,保留着wrapped函数
import functoolsdef logger(fn): def loger(*args,**kwargs): "This funation logger" print("函数开始运行") ret = fn(*args,**kwargs) print("函数结束") return ret functools.update_wrapper(loger,fn) return loger@loggerdef add(x,y): ''' This is funation add ''' return x + yprint(add(3,6),add.__name__,add.__doc__)print(add.__wrapped__(4,6)) 结果:函数开始运行函数结束9 add This is funation add 10
wraps
@functools.wraps(wrapped, assigned=WRAPPER_ASSIGNMENTS, updated=WRAPPER_UPDATES)
- 类似copy_doc功能
- wrapped 被包装函数
- 元组WRAPPER_ASSIGNMENTS中是要被覆盖的属性【'__module__', '__name__', '__qualname__', '__doc__', '__annotations__'】模块名、名称、限定名、文档、参数注解
- 元组WRAPPER_UPDATES中是要被更新的属性,__dict__属性字典
- 增加一个__wrapped__属性,保留着wrapped函
import functoolsdef logger(fn): @functools.wraps(fn) def loger(*args,**kwargs): "This funation logger" print("函数开始运行") ret = fn(*args,**kwargs) print("函数结束") return ret return loger@loggerdef add(x,y): ''' This is funation add ''' return x + yprint(add(3,6),add.__name__,add.__doc__)print(add.__wrapped__(4,6))结果:函数开始运行函数结束9 add This is funation add 10
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月05日 10时49分04秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
VL53L0x TOF激光测距的 stm32 HAL库驱动代码
2019-03-04
怎么玩LOG4J
2019-03-04
Oracle创建用户,分配表空间
2019-03-04
自定义标签(JSP2.0)简单标签
2019-03-04
MyBatis自定义类型转换器
2019-03-04
机器学习(湖北师范大学教程)-极大似然估计算法
2019-03-04
【C# 重构】—参数化查询, 需要参数,但未提供该参数
2019-03-04
决策树(二)—— ID3和C4.5
2019-03-04
MySQL~教你满分回答什么是数据库索引? 索引的数据结构是什么? 什么是事务?
2019-03-04
操作系统~进程的状态、转换、控制
2019-03-04
操作系统~线程概念以及多线程模型
2019-03-04
数据结构~缓存淘汰算法--LRU算法(Java的俩种实现方式,时间复杂度均为O(1))
2019-03-04
Python:函数 ----》装饰器函数
2019-03-04
Python:面向对象
2019-03-04
Python练习题 :随机生成一批数
2019-03-04
Spring源码:prepareBeanFactory(beanFactory);方法
2019-03-04
Spring源码:initApplicationEventMulticaster源码解析
2019-03-04
AcWing 786: 第k个数
2019-03-04
AcWing 828. 模拟栈
2019-03-04
添加Selinux权限
2019-03-04