Переопределить метод модуля, из которого используется… 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. Я пытался во многих отношениях, но из ... импорта импортирует оригинальный метод. Когда я изменил код на
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. Работает только для импорта, но, как я уже писал, я не хочу менять код в модулях b.py и a.py.