source() bewirkt, dass die „Symbole“ (Funktionen, Variablen) in der angegebenen Datei in den Namensraum/Umfang der test.py-Datei geladen werden. Dies bedeutet, dass source() das falsche Werkzeug für dieses Problem ist.
(Mit dem von Orip gezeigten Trick, um die Funktion einem anderen Symbol/Namen nach der ersten Quelle zuzuweisen() würde ich davon abraten, da anderer Code, der auf der gewünschten Funktion unter dem ursprünglichen Namen verfügbar sein würde, aufrufen würde Falsche Funktion eventuell.)
Mit Pythons Import-Anweisung können Sie erreichen, dass die Funktionen in separaten Namespaces liegen, indem Sie die Dateien als Python-Module behandeln. Damit dies funktioniert, müssen Sie die Verzeichnispfade mit den gewünschten Dateien in Pythons eigenen "Suchpfad" einfügen: sys.path:
Inhalt von suite_mine/tst_testcase1/test.py:
# -*- coding: utf-8 -*-
import os.path
import sys
# Add path to our modules to the Python search path at runtime:
sys.path.append(os.path.dirname(findFile("scripts", "file1.py")))
sys.path.append(os.path.dirname(findFile("scripts", "file2.py")))
# Now import our modules:
import file1
import file2
def main():
# Access functions in our modules:
file1.do_it()
file2.do_it()
Inhalt suite_mine/tst_testcase1/file1.py:
# -*- coding: utf-8 -*-
import test
def do_it():
test.log("file1.py")
Inhalt suite_mine/tst_testcase1/file2.py:
# -*- coding: utf-8 -*-
import test
def do_it():
test.log("file2.py")
Resultierende Protokolleinträge:
file1.py
file2.py
Nicht sicher, ich habe die Einrückung richtig, aber mindestens 80% besser als zuvor. – Torxed
Yup.All fein.Ich habe das gleiche im Editor aber die Reflexion scheint anders: - | –