【发布时间】:2014-08-29 03:16:27
【问题描述】:
我的模块中有一个函数损坏了
破碎的.py
def brokenfunc():
dependency()
def dependency():
print "hello"
例程依赖于另一个函数依赖,这很好。我需要猴子补丁损坏,所以在另一个模块中我做了
补丁.py
import broken
def brokenfunc():
print "patched"
dependency()
brokenfunc.__globals__["dependency"]=broken.brokenfunc.__globals__["dependency"]
broken.brokenfunc = brokenfunc
broken.brokenfunc()
显然,我必须重写全局变量,因为修补函数中的依赖关系是在修补模块中定义的,并且会在那里寻找依赖关系。
这行得通,但我对这个 hack 不满意。我试图更新整个 globals 字典,但在这种情况下,我覆盖太多并且损坏的函数继续运行。这是正确的做法(也考虑极端情况)还是有另一种正确的策略?
【问题讨论】:
标签: python