Modulinitialisierung in Klasse

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
Deever
User
Beiträge: 15
Registriert: Samstag 30. Juli 2005, 12:46

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
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.
Deever
User
Beiträge: 15
Registriert: Samstag 30. Juli 2005, 12:46

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
ProgChild
User
Beiträge: 210
Registriert: Samstag 9. April 2005, 10:58
Kontaktdaten:

Deever hat geschrieben:Hey Amigos, wie geht's?
Irre ich mich, oder ist das die einzige Frage, die du gestellt hast?
Deever
User
Beiträge: 15
Registriert: Samstag 30. Juli 2005, 12:46

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
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Das könnte man mit Metaclassen machen, könnte aber auch Overkill sein.
Deever
User
Beiträge: 15
Registriert: Samstag 30. Juli 2005, 12:46

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
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?
Antworten