ich hab folgendes Gefrickel:
Ein Hauptscript mit dem ich Klassen dynamisch beim Start importieren möchte:
Code: Alles auswählen
import os
import sys
pluginPath = "./plugins"
plugins = []
def loadPlugins():
sys.path.append(os.path.abspath(pluginPath))
for f in os.listdir(os.path.abspath(pluginPath)):
fname, ext= os.path.splitext(f)
if ext == '.py':
plugins.append(__import__(fname,globals(), locals()))
loadPlugins()
Code: Alles auswählen
class foobar(object):
def __init__(self):
self.pluginInfo = {'name' : "foobar", 'version' : 1}
def funktion1():
pass
def funktion2():
pass
Ein Weg, den ich entdeckt habe, wäre außerhalb der Klasse eine Funktion zu bauen:
Code: Alles auswählen
def classInit():
foo = foobar()
return foo
Code: Alles auswählen
for x in plugins:
plug = x.classInit()
print plug.pluginInfo['name']
Ist loadPlugins() an und für sich ok oder würde man das anders/eleganter lösen?
Danke schonmal fürs Feedback.
Gruß,
Dave