猴子补丁
猴子补丁的用处
1、在运行时替换方法、属性等
2、在不修改第三方代码的情况下增加原来不支持的功能
3、在运行时为内存中的对象增加patch而不是在磁盘的源代码中增加
猴子补丁
属性在运行时的动态替换,叫做猴子补丁(Monkey Patch)。
作用是在运行的时候,动态替换模块方法。先看一个简单的例子
如果有一个模块somemodule.py,在其它代码里面有用到这个类里面的speak方法
class SomeClass(object): def __init__(self): self.name = "yoyo" def speak(self): return "hello world"
在不改变原来代码的基础上,可以重新定义一个speck方法,替换原来的
from xxx.somemodule import SomeClass def new_speak(self): return "new hello" # 替换speck方法 SomeClass.speak = new_speak
替换之后,调用的时候,就会变成新的方法里面内容
some = SomeClass() print(some.speak()) # 运行结果 new hello
替换模块
还有一个比较实用的例子,很多代码用到 import json,后来发现ujson性能更高,如果觉得把每个文件的import json 改成 import ujson as json成本较高,或者说想测试一下用ujson替换json是否符合预期,只需要在入口加上:
import json import ujson def monkey_patch_json(): json.__name__ = 'ujson' json.dumps = ujson.dumps json.loads = ujson.loads monkey_patch_json()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构