覆盖模块方法,使用了from...import
- 论坛
- 覆盖模块方法,使用了from...import
9 浏览
覆盖模块方法,使用了from...import
我在覆盖使用from...import
语句的方法时遇到了问题。以下是一些例子以说明问题:
# a.py模块 def print_message(msg): print(msg) # b.py模块 from a import print_message def execute(): print_message("Hello") # c.py模块将被执行 import b b.execute()
我想覆盖print_message(msg)
方法,但不想改变a.py或b.py模块中的代码。我尝试了很多方法,但from...import
会导入原始方法。当我将代码更改为
import a a.print_message
时,我看到了我的更改。
你能否建议如何解决这个问题?
------------------ 更新 ------------------
我尝试像下面这样做,例如:
# c.py模块 import b import a import sys def new_print_message(msg): print("新内容") module = sys.modules["a"] module.print_message = new_print_message sys.module["a"] = module
但是这在使用from...import
语句时不起作用。只对import a有效,但正如我所写的,我不想改变b.py和a.py模块中的代码。