python 模块打补丁
先自定义两个模块,然后,我们调用模块时,用打补丁方式,改写mod_1.py模块。为mod_2.py内容;其实这就相当于,在不改动mod_1.py模块的前提下,打上补丁。
写这个主要是gevent协程的时候,用到的monkey.patch_all()补丁,其实原理就是这样。
mod_1.py
mod_2.py
第一种方法:
调用时实现补丁。
def monkey_patch_module_2():import sysimport mod_1#mod_1.mod1_function() #print mod1_functionsys.modules['mod_1'] = __import__("mod_2")import mod_1mod_1.mod2_function() #print mod2_functionmonkey_patch_module_2()
结果输出:
mod2_function
小结:从结果可以看出,我们已经把mod_1.py模块,以补丁的形势,替换到了mod_1.py中。
其实严格的说,不能算是打补丁,因为这里完全的把mod_1.py模块的内容替换成了mod_2.py。
这也是在不改变系统原来的代码或内置函数的情况下,来替成我们的代码。注意,这是替换运行时的模块内容。
第二种方法:
import mod_1 import mod_2 def mokey_patch_m_2():mod_1.__name__ = "mod_2" #此可有可无,但是防止乱,还是加上好。mod_1.mod1_function = mod_2.mod2_functionmokey_patch_m_2() mod_1.mod1_function()
结果:
mod2_function
小结:从结果可以看出,mod_1模块的mod1_function()输出的是mod2_function的内容。
其实不难理解,我们就是在运行时,将mod_1.mod1_funcion对象,替换成mod2_function对象。
总结:至于这么做有什么用处,主要是在不改变原来的方法,但是又可以通过打补丁的方式,自定义一些功能。 到真正用的时候就你明白有什么用了。
python 模块打补丁相关推荐
- python模块介绍-gevent介绍:基于协程的网络库
2019独角兽企业重金招聘Python工程师标准>>> python模块介绍-gevent介绍:基于协程的网络库 介绍 gevent是基于协程的Python网络库.特点: 基于lib ...
- python模块和类的通用转换规则(2),三步转oo
介绍模块和类怎么互相转换,不谈面向对象的继承 封装 多态等特点. 一个person_module模块,有人的基本属性和功能. person_module.py如下 # coding=utf8 name ...
- 说说Python中猴子补丁是什么?
公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...
- GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态
GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态 一个Python模块,用于在Python中使用nvidia-smi以编程方式从NVIDA GPU获取GP ...
- 在Ubuntu 14.04.5 LTS上安装python模块selenium 3实录
简介 Selenium是python模块库中一组web自动化测试工具集,提供多种语言的API,例如java,python,ruby,.net等,支持Firefox,Chrome,IE,Safari 等 ...
- Python模块MySQLdb操作mysql出现2019错误:Can't initialize character set utf-8
我使用python的MySQLdb模块实现了一个mysql client, 在测试时,出现了如下错误 Python模块MySQLdb操作mysql出现2019错误:Can't initialize c ...
- Python培训教程分享:Python模块如何导入__all__属性?
本期小编为大家带来的Python培训教程是关于"Python模块如何导入__all__属性?"的内容,后面在工作中是会遇到Python模块这个工作内容的,Python模块的开头通常 ...
- 分享3个好用到爆的 Python 模块,点赞收藏
作者 | 俊欣 来源 | 关于数据分析与可视化 今天给大家介绍3个特别好用的Python模块,知道的人可能不多,但是特别的好用. Psutil Pendulum Pyfiglet Psutil Pyt ...
- python模块之image修改图片类型
python模块之image修改图片类型 有时候我们需要不同格式的图片后缀格式,如:png,jpg,如果仅仅手动修改图片的后缀的话,只是表面修改了后缀格式,其实图片的原类型仍然没有变化,可以用pyth ...
最新文章
- SpringBoot部署脚本,拿走即用!
- datatable自动增加序号
- pythonsocket自动化教程_python---socket自动化交互
- python读取浮点数与源文件不同
- JAVA—object映射转化为long类型方式
- 【华为云实战开发】16.DevOps交付模式下的软件测试
- CentOS7 KVM虚拟化技术 详解
- 解决谷歌浏览器 Google Chrome不能拖拽安装离线插件的办法
- Shape文件的解析
- JavaWeb 注解
- 大神论坛 史上最全植物大战僵尸分析及游戏辅助Python实现
- 解决联想拯救者打开AMD Radeon Software弹出“The version of AMD Radeon Software ......”框问题
- React 全新文档上线!
- malloc申请内存空间失败
- 双栈完全解决计算器问题
- 局域网攻击之DHCP Starvation(DHCP饿死)
- 【Linux】部署web项目
- 利用python实现空格消除
- PostgreSQL 实现交叉表查询(2)
- Fabric性能测试工具Caliper安装使用
热门文章
- 双非学计算机本科毕业,这些双非学校计算机很强,学生超级抢手,没毕业就被预定...
- centos6.4安装chrome浏览器
- 数字城市厦门1+N联动执法管理系统平台测试用例【软件测试与工程】
- flink的(Sliding)滑动窗口
- 有向图寻找环路python_有向图的深度优先搜索 —— 找出环路
- 当我让AI描绘古代男子谪仙外貌。。。
- SpringBoot集成Swagger2与Swagger3的区别
- PPT提示“发现内容有问题”的解决方案
- 【精华贴】支付宝开放平台简介
- 商务智能-第三章 联机分析处理OLAP