python运行时修改代码的方法——monkey patch
来源:互联网 发布:原创文章软件 编辑:程序博客网 时间:2024/05/16 17:37
monkey patch (猴子补丁)
用来在运行时动态修改已有的代码,而不需要修改原始代码。
简单的monkey patch 实现:
#coding=utf-8def originalFunc(): print 'this is original function!' def modifiedFunc(): modifiedFunc=1 print 'this is modified function!' def main(): originalFunc() if __name__=='__main__': originalFunc=modifiedFunc main()
python中所有的东西都是object,包括基本类型。查看一个object的所有属性的方法是:dir(obj)
函数在python中可以像使用变量一样对它进行赋值等操作。
查看属性的方法:
print locals()print globals()
当我们import一个module时,python会做以下几件事情
•导入一个module
•将module对象加入到sys.modules,后续对该module的导入将直接从该dict中获得
•将module对象加入到globals dict中
当我们引用一个模块时,将会从globals中查找。这里如果要替换掉一个标准模块,我们得做以下两件事情
1.将我们自己的module加入到sys.modules中,替换掉原有的模块。如果被替换模块还没加载,那么我们得先对其进行加载,否则第一次加载时,还会加载标准模块。(这里有一个import hook可以用,不过这需要我们自己实现该hook,可能也可以使用该方法hook module import)
2.如果被替换模块引用了其他模块,那么我们也需要进行替换,但是这里我们可以修改globals dict,将我们的module加入到globals以hook这些被引用的模块。
- python运行时修改代码的方法——monkey patch
- python运行时修改代码的方法——monkey patch
- [python]什么是monkey patch
- 猴子补丁 Monkey-patch(重写方法)
- Monkey patch
- SVN—patch的应用(create patch,apply patch)
- android monkey的运行
- 针对python机器学习与实战代码在python3上运行出现的错误分析和warning的修改代码34—38
- 谈由VMM在运行时为GUEST OS 中给定进程打PATCH的方法
- 代码打补丁的利器——diff和patch
- svn 打patch生成修改点对照表的方法
- python中查看代码的运行时间方法
- python统计代码运行的时长
- Python开发测试工具(一)—Monkey
- 打patch的方法
- git Patch的方法
- python测量代码运行时间方法~
- 在myeclipse中代码修改不起作用:当在myeclipse中修改处理方法的代码时,重新发布Tomcat,在运行时,jsp页面显示内容没变,还是按修改前的代码执行
- “少年派”生命里的上帝与野兽
- 时间格式转换算法: XXXXXX -> XX:XX:XX
- iOS图片裁剪、绘制背景色
- desktop file entry detal
- ubuntu 下VirtualBox 共享设置
- python运行时修改代码的方法——monkey patch
- getSystemservice()原理
- SringIOC
- 塞林格《麦田里的守望者》读后感
- 类图
- UIActivityIndicatorView的两种形式
- DotNotation
- 什么是万向节(Gimbal)
- ora-01652无法通过128(在表空间temp中)扩展temp段