文件夹结构如下:
├─ some_module/
│ ├─ __init__.py
│ ├─ module.py
├─ main.py
子模块被其内容遮蔽:
# __init__.py
from .module import module
__all__ = ["module"]
# module.py
def module_b():
print("In module_b")
def module():
print("In module")
module_b()
# main.py
from some_module.module import module
module()
main.py
的输出:
In module
In module_b
我想用lambda: print("other module")
方法从main.py
中修补方法module_b()
(保留some_module
文件夹的内容)。运行main.py
后的预期输出:
In module
other module
如何做到这一点?
是这样的:
# main.py
import sys
from some_module.module import module
sys.modules["some_module.module"].module_b = lambda: print("other module")
module()