ich schreibe momentan (seit gefühlten jahren) in python eine GUI für ein messgerät (unter ubuntu). mit den gelesenen messdaten sollen während der messung auch berechnungen angestellt werden können (z.b. mittelwert eines messkanals oder aktueller mittelwert über alle messkanäle usw.).
dazu hab ich mir folgendes ausgedacht:
der nutzer soll eigenhändig skripte in das unterverzeichnis "modules/calc" meines arbeitsverzeichnisses ablegen können, die jeweils eine klasse enthalten, die von meiner basisklasse "Calculation" erbt. in der basisklasse sind konstruktor und destruktor implementiert, die dafür sorgen, dass jedes erstellte element eine einzigartige ID bekommt. die unterklassen implementieren nur die methode "calc".
in der gui soll der benutzer aufgelistet bekommen, welche unterklassen (also berechnungsmethoden) verfügbar sind und diese auch wählen und benutzen können. wie schaffe ich es jetzt, ohne zu wissen, wie diese unterklassen genau heißen, sie zur laufzeit ins programm zu laden und zu benutzen?
hab schon mit globals() experimentiert in der form (className ist in dem fall gleichzeitig der dateiname der unterklasse, so komme ich an ihn ran):
Code: Alles auswählen
calcClass = globals()[className]
instance = calcClass()
andere versuche waren, alle calc-Funktionen in eine Klasse zu tun und diese dann mit
Code: Alles auswählen
Calculation.__dict__
was sind eure ideen dazu? wie kann man das problem (besser) lösen? es ist vor allem wichtig, dass die berechnungs-skripte von nutzer zu nutzer austauschbar sind.
vielen dank im voraus für die antworten!