Python 装饰器可以对既有方法执行强大的自定义功能, 而且使用
@
关键字已经是很方便的使用方式了,但是无法解决需要装饰所有函数的需求,本文记录解决方案。
解决思路 {#解决思路}
需要用到Python类自带的魔法函数
- 获取到类中所有方法、属性名称
- 过滤得到方法名称
- 通过
__getattribute__
方法获得方法定义 - 重载
__getattribute__
方法,装饰类中的方法,返回装饰后的函数
应该是没有说清楚,上代码吧
示例代码 {#示例代码}
- 展示一个自动装饰类方法,对函数运行时间进行计时、打印的程序
- 函数输入类定义,使用返回的类定义(装饰过的类)运行时即可得到运行计时结果
- 输出
参考资料 {#参考资料}
文章链接:
https://www.zywvvd.com/notes/coding/python/python-wrap-all-method/python-wrap-all-method/