Seite 1 von 1

Modulinitialisierung in Klasse

Verfasst: Mittwoch 19. Oktober 2005, 13:19
von Deever
Hey Amigos, wie geht's?

Ich habe hier eine Software, die bei Plugins (als Modul implementiert) ein gewißes Format voraussetzt: z.B. müßen modulglobale Funktionen wie initmodule und callmodule existieren. Nun hatte ich die Idee, diesen ganzen Krempel hinter einer Klasse zu verstecken. Der Pluginprogrammierer erbt sein Plugin von dieser Klasse und implementiert die für ihn interessanten Funktionen. Dies setzt voraus, daß Code beim Laden der Klasse (-> beim Erstellen des Klassenobjekts -> beim Laden des Modules) modulglobale Namen erstellt.

Code: Alles auswählen

class PluginBaseClass:
  global initmodule, callmodule
  def __init__(self, foo, bar): pass
Zur endgültigen Verunmöglichung muß noch in den globalen Funktionen mit der Klasse gearbeitet werden können.
Ja, ich weiß, das ist was Geisteskranke, aber bitte erinnert mich nicht weiter daran! :)

Vielen Dank für eure Antworten!
Gruß,
/dev

Verfasst: Mittwoch 19. Oktober 2005, 21:04
von BlackJack
Mir ist nicht so ganz klar was Du da machen willst. Wie *genau* soll man das dann benutzen können? Als Programmierer eines Moduls/Plugins meine ich.

Verfasst: Mittwoch 19. Oktober 2005, 22:21
von Deever
Die Benutzer der Klasse sollen diese einfach in einem eigenen Modul beerben:

Code: Alles auswählen

from appplugin import PluginBaseClass
class MyPlugin(PluginBaseClass):
    """irgendein Code"""
Und in dem Modul werden von der Klasse die globalen, parameterlosen Funktionen initmodule und callmodule gesetzt. Also so, daß sich der Benutzer meiner Pluginklasse gar nicht mehr um das von der Applikation geforderte Modulformat kümmern muß,

Vielen Dank für deine Hilfe!
Gruß,
/dev

Re: Modulinitialisierung in Klasse

Verfasst: Mittwoch 19. Oktober 2005, 22:34
von ProgChild
Deever hat geschrieben:Hey Amigos, wie geht's?
Irre ich mich, oder ist das die einzige Frage, die du gestellt hast?

Verfasst: Donnerstag 20. Oktober 2005, 11:56
von Deever
Hast recht! *g*

Also nochmals: Ich will im "static-Bereich" einer Klasse (also außerhalb einer Methode, aber innerhalb der Klassendefinition) Code reinbiegen, der modulglobale Namen auf Funktionen setzt, in denen aber auch bereits mit der Klasse gearbeitet werden kann. Wie kann ich das erreichen?

Gruß,
/dev

Verfasst: Donnerstag 20. Oktober 2005, 12:24
von Joghurt
Das könnte man mit Metaclassen machen, könnte aber auch Overkill sein.

Verfasst: Donnerstag 20. Oktober 2005, 18:42
von Deever
Joghurt hat geschrieben:Das könnte man mit Metaclassen machen, könnte aber auch Overkill sein.
Richtig, habe ich vergessen zu erwähnen! Wenns wirklich nicht anders geht, mach ich so eine. Ist aber IMHO der Tropfen, der das Faß zum Überlaufen brächte.

Gruß,
/dev

Verfasst: Montag 24. Oktober 2005, 11:14
von Daveron
Kannst du nicht einfach in deiner Plugin Class im eine Methode definieren, die dir alle benötigten Namen setzt? Der Plugin Programmeriung ruft diese dann im Kontruktor auf und hat dann damit nichts weiter am Hut.

Oder habe ich da etwas falsch verstanden?