Zastąp metodę modułu, z której używany jest… import
Mam problem z nadpisaniem metody, w której użyto instrukcji ... import. Przykład ilustrujący problem:
# 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()
Chciałbym przesłonić metodę print_message (msg) bez zmiany kodu w module a lub b. Próbowałem na wiele sposobów, ale z ... importu importowałem oryginalną metodę. Kiedy zmieniłem kod na
import a
a.print_message
niż widzę moją zmianę.
Czy możesz zasugerować, jak rozwiązać ten problem?
Z góry dziękuję za mały przykład.
Z poważaniem
------------------ Aktualizacja ------------------
Starałem się to zrobić jak poniżej, np .:
# 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
Ale to nie działa tam, gdzie używam for ... oświadczenie o imporcie. Działa tylko dla importu, ale jak pisałem, nie chcę zmieniać kodu w modułach b.py i a.py.