Ich habe Problem zu überschreiben Methode, wo von ... Import-Anweisung verwendet wird. Einige Beispiele illustrieren das Problem:Override-Modul-Methode, wo von ... Import verwendet wird
# 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()
Ich mag würde print_message (msg) -Methode außer Kraft zu setzen, ohne Code in einem oder b Modulwechsel. Ich habe es auf viele Arten versucht, aber von ... Import importiert Originalmethode. Als ich den Code änderte
import a
a.print_message
als ich meine Änderung sehe.
Können Sie mir vorschlagen, wie Sie dieses Problem lösen können?
Vielen Dank im Voraus für ein kleines Beispiel.
Mit freundlichen Grüßen
------------------ ------------------ aktualisieren
I versucht, das zu tun, wie unten zB:
Aber das funktioniert nicht, wo ich für ... Import-Anweisung verwende. Arbeitet nur für den Import, aber wie ich geschrieben habe, will ich Code in b.py und a.py Modulen nicht ändern.
(1) Was genau meinen Sie mit "override"? Affe Patch? (2) In dem Code, den Sie präsentieren, gibt es nur eine 'print_message()'. – NPE
Ich möchte die Methode print_message() ändern, um z. Nachricht "Neuer Inhalt" Wie erreicht man das aus der c.py Datei ohne Änderungen in a.py und b.py? – Pawel
zur Erklärung und Demonstration von "Affe Patch": http://Stackoverflow.com/a/6647776/1498405 – hardmooth