V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pythonee
V2EX  ›  程序员

monkey patch是什么样的技术?

  •  
  •   pythonee · 2013-03-24 15:49:22 +08:00 · 6073 次点击
    这是一个创建于 4023 天前的主题,其中的信息可能已经有所发展或是发生改变。
    各位大牛,你们日常中有用到这种技术吗?能讲讲应用场景,为啥要使用这个东西吗?
    之前没有接触过这个东西,在书上读到这样一个词,wiki也就是一些定义,我想知道实际中的用途
    8 条回复    1970-01-01 08:00:00 +08:00
    ericFork
        1
    ericFork  
       2013-03-24 16:23:12 +08:00   ❤️ 1
    gevent 的 monkey patch 可以参考
    dreampuf
        2
    dreampuf  
       2013-03-24 16:56:17 +08:00
    chrome 的各种user-script
    pythonee
        3
    pythonee  
    OP
       2013-03-24 21:02:35 +08:00
    @ericFork 能具体给出代码位置吗?原谅伸手党一下,因为的确接触不多
    pythonee
        4
    pythonee  
    OP
       2013-03-24 21:02:54 +08:00
    @dreampuf user-script怎么也算monkey patch啊
    dreampuf
        5
    dreampuf  
       2013-03-24 21:20:01 +08:00
    @pythonee user-script也是一种动态修改手段
    duhastmich
        6
    duhastmich  
       2013-03-24 21:30:54 +08:00
    大概是修改原生类或者某个库提供的类(不是继承),比如js里可以通过改prototype,主要是让api 方便/好看/magic 一点吧
    binux
        7
    binux  
       2013-03-24 21:44:57 +08:00
    A monkey patch is a way to extend or modify the run-time code of dynamic languages without altering the original source code.

    严格意义上说,好像也不是很常用。。
    pepsin
        8
    pepsin  
       2013-03-24 22:38:57 +08:00
    基本上是这样的,抓两个猴子,给他们几件衣裳,教他们缝线,他们就开始拿碎布打补丁了,偶尔会拿香蕉皮当布打上去。

    开玩笑的,MonkeyPatch可能Ruby用的最多了。修改一些原生类或者修改一些大的模型的一些方法什么的。在一些小地方你可能需要一个类表现出另一种姿态,比如让print打印的时候默认加个“×”且你不希望自己在每个print都自己拼上那个“×”,这时候就需要MonkeyPatch一下。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3164 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:54 · PVG 18:54 · LAX 03:54 · JFK 06:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.