ich habe mal eine Frage. Ich bin gerade dabei ein Programm zu schreiben welches automatisch in einem Unterordner nach weiteren Modulen sucht. Diese Module werden dann dynmisch geladen wie folgt:
Code: Alles auswählen
def importModules():
global NUM, DATA
for f in os.listdir(DIR):
module_name, ext = os.path.splitext(f) files, etc.
if ext == '.py':
module = __import__(module_name)
try:
DATA[NUM, 1] = getattr(module,'__short_desc__')
except:
DATA[NUM, 1] = ""
try:
...
...
...
Code: Alles auswählen
__name__ = "first module"
__short_desc__ = "basic module"
__long_desc__ = "this is the long informtion about this module"
__author__ = "asdf"
dann hat jedes modul immer die funktion run() welche zum ausführen des Modules benötigt wird. So weit so gut. Nun benötigt jedes modul aber noch weitere variablen welche in dem Hauptprogramm gesetzt werden müssen damit das Modul seine arbeit beginnen kann.
ich weiß dass ich mit setattr(x,y,z) und getattr(x,y) variablen in anderen modulen lesen und setzen kann. allerdings muss hierfür der Name der Variable bekannt sein. Diese können(und werden) sich aber in meinen Modulen ändern. Auch die Anzahl der Variablen variiert. Statisch sind lediglich die vier oben angegeben.
Was muss ich nun tun damit ich Variablen 'on the fly' aus dem Modul bekomme und setzen kann?
ist ja auch möglich dass ich das ganze hier schon viel zu kompliziert angegangen bin und es eigentlich viel einfacher geht, aber ich habe erst gestern angefangen mit python zu programmieren, bin also noch sehr frisch auf dem Gebiet
hier ist noch einmal ein code für ein typisches module:
-------------------------------------------------------------
Code: Alles auswählen
#!/usr/bin/python
#global vars
__name__ = "asdf"
__short_desc__ = "asdf"
__long_desc__ = "asdf"
__author__ = "asdf"
#local vars
__var1__ = "need to be set"
__var2__ = "need to be set"
def run():
first_func()
def first_func():
print "first func called"
return __var1__ + __var2__
Also noch einmal kurz zur Erklärung anhand dieses Modules:
Was ich möchte ist das mein Hauptprogramm beim laden des Modules erkennt das es dir Variablen __var1__ und __var2__ gibt und ich diese entsprechend in meinem Hauptprogramm ändern kann.
Ich hoffe ihr könnt mir hierbei ein wenig weiter helfen.
Schönes Wochenende,
MfG
S.Michel