Personal tools

MonkeyPatch简介

介绍Python代码修补

介绍Python代码修补

传统Patch: diff + merge

需要修改源代码

  • 不便于安装
  • 可能不兼容

Mokey Patch

不需要修改源代码:

from SomeOtherProduct.SomeModule import SomeClass

old_speak = SomeClass.speak
def speak(self):
    return "ook ook eee eee eee!" + old_speak(self)

SomeClass.speak = speak
SomeClass.__old_speak = old_speak

灵活的猴子

感谢Python的动态性:

  • Zope 2最常用的修补方法
  • 非常方便安装
  • ZopeChinaPak就是系列的补丁集合

又爱又恨的猴子

  • 修补竞争:如果2个模块同时修补1个方法?
  • 解决问题更困难
  • 何时退出舞台?

Monkey发展历史

来自Zope公司:

  • 起始: guerilla patch: 游击的,随意的

  • 误解: gorilla patch

    大猩猩, 壮而残暴的男人, <俚> 歹徒(尤指使用暴力者)

  • 改良: monkey patch

  • 继续困惑: Ruby / RoR

 

本站由 润普公司资助, 采用 易度CMS 构建。

广而告之:润普公司 易度在线工作平台,包括 易度文档管理系统 易度项目管理系统 , 易度部门管理 ,均采用Zope 3/BFG技术开发。
沪ICP备05008050