Personal tools
You are here: Home 博客群 潘俊勇的Blog 2006 2006-12 MonkeyPatch简介
Log in


Forgot your password?
Recent Comments
  (oSky) 2007-10-30
 得有银哪! (Zoomq) 2007-10-25
 晕菜 (Anonymous User) 2007-10-21
 和用VC调用有什么不同 (Anonymous User) 2007-10-08
 求助 (yan_fangli) 2007-09-27
 
Document Actions

MonkeyPatch简介 MonkeyPatch简介

Submitted by panjy. on 2006-12-17 00:48. Python
介绍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


Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: