我在覆盖from...import
使用语句的方法时遇到问题。一些例子来说明问题:
# a.py module
def print_message(msg):
print(msg)
# b.py module
from a import print_message
def execute():
print_message("Hello")
# c.py module which will be executed
import b
b.execute()
我想覆盖print_message(msg)
方法而不更改 a 或 b 模块中的代码。我尝试了很多方法,但from...import
导入了原始方法。当我将代码更改为
import a
a.print_message
然后我看到了我的变化。
你能建议如何解决这个问题吗?
- - - - - - - - - 更新 - - - - - - - - -
我试着像下面那样做,例如:
# c.py module
import b
import a
import sys
def new_print_message(msg):
print("New content")
module = sys.modules["a"]
module.print_message = new_print_message
sys.module["a"] = module
但这在我使用for...import
语句的地方不起作用。仅适用于 import a 但正如我所写,我不想更改 b.py 和 a.py 模块中的代码。