在__init__.py中隐藏的包中的补丁方法



文件夹结构如下:

├─ 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()

最新更新