ich bin mir nicht sicher ob diese herangehensweise richtig ist aber sie funktioniert und ist schön einfach.
Um einen geschriebenen Editor um Funktionen aufzuwerten die wie in einem Package abgelegt sind importiere ich diese Funktionen wie folgt:
Code: Alles auswählen
import importlib
import os
import wxml
wxmlpath = os.path.abspath(wxml.__file__)
wxmldir = os.path.dirname(wxmlpath)
excdirs = ["__pycache__"]
excfiles = ["__init__.py"]
for root, dirs, files in os.walk(wxmldir):
for exdir in excdirs:
if exdir in dirs:
dirs.remove(exdir)
for exfile in excfiles:
if exfile in files:
files.remove(exfile)
for d in dirs:
m = os.path.join(root, d).replace(wxmldir, "wxml").replace(os.sep, ".")
importlib.import_module(m)
for f in files:
m = os.path.join(root, f).replace(wxmldir, "wxml").replace(os.sep, ".").replace(".py", "")
importlib.import_module(m)
x.func_a
x.y.func_a
x.y.z.func_a
x.y.z.func_b
x.y.z.a.func_a
Nun parse ich mit anderen Funktionen ein .cfg-File und brauche z. B. die Funktion z.func_b.
Wie komme ich nun am besten über den string "z.func_b" an die gewünschte Function?
Ich würde jetzt alles von oben mit dir(x) angefangen durchsuchen und dann die Funktion mit getattr rausfischen oder gibt es eine bessere Lösung?
Grüße
Rigoletto
