Seite 1 von 1

Pluginsystem

Verfasst: Freitag 2. September 2011, 16:24
von Dav1d
Wie ist ein gutes Plugin-System aufgebaut? Und wie wird es implementiert?
Das einfachste was mir einfällt ist sowas:

Code: Alles auswählen

# main
import imp

class Foo(object):
     def __init__(self):
         self.funcs = []

     def load_plugin(self, name):
         fp, pathname, description = imp.find_module(name)
         imp.load_module(name, fp, pathname, description)
         self.funcs.extend(my_plugin.funcs)

     def call_em(self):
         for func in self.funcs:
             func(self, 'weitere args')

Code: Alles auswählen

# my_plugin

def bar(cls, arg):
    print cls, arg

funcs  = [bar]
Finde ich nicht wirklich sehr schön und brauchbar ...

Oder wie es weechat macht: http://www.weechat.org/scripts/source/s ... z.py.html/
Allerdings ist mir unklar wie man sowas bewerkstelligen könnte, desweiteren würde das auch vorraussetzen, dass das Programm auf Modulebene abläuft, oder?

Ich hoffe ihr könnt mir da weiterhelfen

//Edit: mal Beispiel erweitert