wrapt 一个方便的python装饰器包
wrapt 一个方便的python装饰器包,提供了装饰器包装,以及猴子补丁能力,是一个很值得使用的包
一个简单猴子补丁玩法
- 业务场景
有一个登陆方法,需要进行日志记录,但是不想直接修改原始代码
参考代码
my.py
def login(name,password):
return f"Welcome {name}! Your password is {password}"
- 基于wrapt的多猴子补丁解决方法
wra.py
import wrapt
@wrapt.patch_function_wrapper('my', 'login')
def my_wrapper(wrapped, instance, args, kwargs):
print("Before method",args,kwargs)
result = wrapped(*args, **kwargs)
print("After method")
return result
- 使用
demo2.py 注意顺序很重要,应该先导入包装的,然后是实际要使用的
from wra import *
from my import login
print(login("Alice","1234"))
- 效果
说明
wrapt 支持的猴子补丁玩法,对于我们快速进行python 包的调整是很方便的,同时作者github上的一个博客也值得学习下
参考资料
https://github.com/GrahamDumpleton/wrapt
https://wrapt.readthedocs.io/en/master/quick-start.html
https://github.com/GrahamDumpleton/wrapt/blob/develop/blog/11-safely-applying-monkey-patches-in-python.md
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2022-08-31 主机网络限速+测速工具
2022-08-31 nginx proxy_pass 包含路径问题
2022-08-31 windows jenkins openssh 集成问题
2020-08-31 orika java bean 转换工具试用
2020-08-31 graalvm js 内置commonjs 模式试用
2020-08-31 graalvm js 与java 类型转换的一些方法
2019-08-31 haproxy 2.0 dataplaneapi docker 镜像