在我的应用程序中,我正在使用名为examplemod
的包example
中的模块。
我的应用程序:
from example import examplemod
examplemod.do_stuff()
它像这样在example
中导入另一个模块。
示例mod.py:
from example import config
# uses config
# then does stuff
config
使用常量。
配置py:
CONSTANT = "Unfortunate value"
当我在应用程序中使用examplemod
(将其设置为CONSTANT = "Better value"
)时,我希望重写此常量,并且我不希望修改底层模块,这样就不必维护自己的包。我该怎么做?
是的,但它只能在完全限定的模块访问路径下正常工作:
这被称为monkey patching,如果有其他方法来完成相同的任务,这是相当常见的,但不是首选:
问题是,您依赖于
examplemod
和config
的内部保持不变,因此如果任何一个模块发生更改,这可能会中断。谢谢大家的回答。他们给我指出了正确的方向,尽管他们没有一个像书面上写的那样工作。我最后做了以下事情:
(同时,我正在向模块维护人员提交一个补丁,使常量成为一个可配置的选项,因此我不必这样做,但同时需要安装库存模块。)
相关问题 更多 >
编程相关推荐