Plugin System

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Ich habe versucht anhand dieses Artikels ein Plugin System zu realisieren.
Das Problem ist dass die Plugin Klasse keine weiteren subklassen bekommt wenn ich mein Plugin importiere. Welches wie im Tutorial von der Plugin Klasse erbt.

Plugin Loader: http://paste.pocoo.org/show/78478/
Das Plugin sieht zum testen einfach so aus:

Code: Alles auswählen

from plugin_loader import Plugin

class ExamplePlugin(Plugin):
    pass
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Hm, wenn ich das ganze als Modul importiere funktioniert es einwandfrei :shock:
Das stört mich jetzt nicht weiter aber mich würde schon der Grund interessieren.
Karl
User
Beiträge: 252
Registriert: Freitag 29. Juni 2007, 17:49

DasIch hat geschrieben:Hm, wenn ich das ganze als Modul importiere funktioniert es einwandfrei :shock:
Das stört mich jetzt nicht weiter aber mich würde schon der Grund interessieren.
Ich hab keine Ahnung, warum das so sein könnte, aber ganz sicher, dass du nicht noch irgendeine andere Kleinigkeit geändert hast?
Aber ansonsten hatte ich auch irgendwann mal ein komisches Erlebnis, da war's aber genau andersrum, es funktionierte nur mit einem from import ;)
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

In Zeile 44 musste das `not` weg, deswegen wurde eine leere Liste an `load` übergeben. Das hat aber das Problem trotzdem nicht gelöst. Im Tutorial wird das ganze auch in einer Python Shell demonstriert, hätte ich schon vorher mal testen sollen.
Da ich das ganze natürlich noch etwas erweitern werde etc. wird es sicherlich nicht schaden das ganze als Modul zu lassen. Insofern ist stellt das ganze jetzt für mich kein akutes Problem mehr dar.
Wie gesagt wäre es trotzdem interessant den Grund zu wissen.
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Wenn du das direkt ausführst, wird das Modul als ``__main__`` geladen. Das Plugin importiert das ``plugin_loader``-Modul. ``plugin_loader`` wurde vorher jedoch als ``__main__`` importiert, wird also noch einmal als ``plugin_loader`` geladen. Und `plugin_loader.Plugin` ist nun halt mal nicht `__main__.Plugin`. Würde das Plugin ``from __main__ import Plugin`` machen, würde das erwartete Verhalten auftreten.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Da muss man erstmal drauf kommen, danke.
Antworten