先自定义两个模块,然后,我们调用模块时,用打补丁方式,改写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 模块打补丁相关推荐

  1. python模块介绍-gevent介绍:基于协程的网络库

    2019独角兽企业重金招聘Python工程师标准>>> python模块介绍-gevent介绍:基于协程的网络库 介绍 gevent是基于协程的Python网络库.特点: 基于lib ...

  2. python模块和类的通用转换规则(2),三步转oo

    介绍模块和类怎么互相转换,不谈面向对象的继承 封装 多态等特点. 一个person_module模块,有人的基本属性和功能. person_module.py如下 # coding=utf8 name ...

  3. 说说Python中猴子补丁是什么?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  4. GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态

    GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态 一个Python模块,用于在Python中使用nvidia-smi以编程方式从NVIDA GPU获取GP ...

  5. 在Ubuntu 14.04.5 LTS上安装python模块selenium 3实录

    简介 Selenium是python模块库中一组web自动化测试工具集,提供多种语言的API,例如java,python,ruby,.net等,支持Firefox,Chrome,IE,Safari 等 ...

  6. Python模块MySQLdb操作mysql出现2019错误:Can't initialize character set utf-8

    我使用python的MySQLdb模块实现了一个mysql client, 在测试时,出现了如下错误 Python模块MySQLdb操作mysql出现2019错误:Can't initialize c ...

  7. Python培训教程分享:Python模块如何导入__all__属性?

    本期小编为大家带来的Python培训教程是关于"Python模块如何导入__all__属性?"的内容,后面在工作中是会遇到Python模块这个工作内容的,Python模块的开头通常 ...

  8. 分享3个好用到爆的 Python 模块,点赞收藏

    作者 | 俊欣 来源 | 关于数据分析与可视化 今天给大家介绍3个特别好用的Python模块,知道的人可能不多,但是特别的好用. Psutil Pendulum Pyfiglet Psutil Pyt ...

  9. python模块之image修改图片类型

    python模块之image修改图片类型 有时候我们需要不同格式的图片后缀格式,如:png,jpg,如果仅仅手动修改图片的后缀的话,只是表面修改了后缀格式,其实图片的原类型仍然没有变化,可以用pyth ...

最新文章

  1. SpringBoot部署脚本,拿走即用!
  2. datatable自动增加序号
  3. pythonsocket自动化教程_python---socket自动化交互
  4. python读取浮点数与源文件不同
  5. JAVA—object映射转化为long类型方式
  6. 【华为云实战开发】16.DevOps交付模式下的软件测试
  7. CentOS7 KVM虚拟化技术 详解
  8. 解决谷歌浏览器 Google Chrome不能拖拽安装离线插件的办法
  9. Shape文件的解析
  10. JavaWeb 注解
  11. 大神论坛 史上最全植物大战僵尸分析及游戏辅助Python实现
  12. 解决联想拯救者打开AMD Radeon Software弹出“The version of AMD Radeon Software ......”框问题
  13. React 全新文档上线!
  14. malloc申请内存空间失败
  15. 双栈完全解决计算器问题
  16. 局域网攻击之DHCP Starvation(DHCP饿死)
  17. 【Linux】部署web项目
  18. 利用python实现空格消除
  19. PostgreSQL 实现交叉表查询(2)
  20. Fabric性能测试工具Caliper安装使用

热门文章

  1. 双非学计算机本科毕业,这些双非学校计算机很强,学生超级抢手,没毕业就被预定...
  2. centos6.4安装chrome浏览器
  3. 数字城市厦门1+N联动执法管理系统平台测试用例【软件测试与工程】
  4. flink的(Sliding)滑动窗口
  5. 有向图寻找环路python_有向图的深度优先搜索 —— 找出环路
  6. 当我让AI描绘古代男子谪仙外貌。。。
  7. SpringBoot集成Swagger2与Swagger3的区别
  8. PPT提示“发现内容有问题”的解决方案
  9. 【精华贴】支付宝开放平台简介
  10. 商务智能-第三章 联机分析处理OLAP