Monkey根据modu内的另一个功能来修补模块功能

2024-10-01 17:38:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个模块里有个函数坏了

在断开.py在

def brokenfunc():
    dependency()


def dependency():
    print "hello"

例程依赖于另一个函数依赖关系,这很好。我需要把猴子补丁弄坏,所以在另一个模块里我做了

在修补.py在

^{pr2}$

显然,我必须重写全局变量,因为补丁函数中的依赖项是在补丁模块中定义的,并且会在那里查找依赖关系。在

这很管用,但我对黑客攻击不满意。我试图更新整个globals字典,但是在这种情况下,我重写了太多,损坏的函数继续运行。这是正确的方法吗(也考虑到角落的情况),还是有另一个正确的策略?在


Tags: 模块函数pyhello关系def情况dependency
1条回答
网友
1楼 · 发布于 2024-10-01 17:38:12

您只需在新函数中引用依赖项:

import broken

def brokenfunc():
    print "patched"

    broken.dependency()

broken.brokenfunc = brokenfunc

或者,您可以通过导入将dependency添加到模块全局参数:

^{pr2}$

实际上不需要达到这样的长度;brokenfunc.__globals__只是当前的模块名称空间。在

相关问题 更多 >

    热门问题