ich stehe vor folgendem Problem und finde im Netz auch keine Lösung die Funktioniert. vielleicht hat hier jemand eine Lösung. Ich suche nache einer möglichkeit Klassen nicht anhand eines Namens zu erzeugen sondern anhand eines Strings (aus einer Variable). Hintergrund ist ein Config file wo div. Module aktiviert bzw deaktiviert werden. Eine Lösung währe :
File Struktur:
etc : konfig Files
gateway -> onewire: ds1820.py, hm_server.py
main.py
Klassen:
ds1820.py:
class server:
def __init__(self,args):
...mach was
hm_server.py:
class server:
dev __init__(self,args):
... mach auch was
main.py:
Code: Alles auswählen
from gateways.onewire import * #in der __init__.py werden alle verfügbaren module gepflegt als beispiel __all__ = ['ds1820', 'hm_server']
modul="ds1820"
if modul=="ds1820":
modul_ds1820=ds1820.server("Argumente")
elseif modul=="hm_server":
modul_hm_server=hm_server.server("Argumente)
else:
print ("sorry unkown modul")
....
Ich würde gerne die Klassen anhand eines Config Files erzeugen. Ca so:
Code: Alles auswählen
from gateways.onewire import *
modul_to_load=["ds1820","hm_server"]
load_modul={}
for modul_name in modul_to_load:
load_modul{modul_name}=modul_name.server(args)
...
load_modul{'ds18201'}.machwas()
ist das Modul/Klasse importiert
wurde die Klasse erzeugt
...