dynamisches Klassenladen

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
matott

Also folgendes:
Ich programmiere zur Zeit ein ein Projekt, welches streng modularisiert ist. Der Anwender definiert das zu ladene Modul, der Kern der Software läft dieses.

Nun hier stoße ich an meine Grenzen. Wie ist es möglich eine Klasse (dynamischer Name aus einer Variablen) dynamisch zu laden?

Code: Alles auswählen

variable = "klasse"
import variable
Funktioniert ja nun nicht.
Desweiteren möchte ich solche Aufrufe tätigen:

Code: Alles auswählen

variable = "klasse"
class = variable.__init__ ()
Wobei class Objekt der Klasse "klasse" ist.

Desweiteren wäre eine Erkärung zu Modulen, Klassen und Files inerhalb von sys.path auch hilfreich.

Ich hoffe ihr könnt mir kompetent helfen.

thx
matott

Edit (Leonidas): Code in Python-Tags gesetzt.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:


GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

matott hat geschrieben:Desweiteren möchte ich solche Aufrufe tätigen:

Code: Alles auswählen

variable = "klasse"
class = variable.__init__ ()
Wobei class Objekt der Klasse "klasse" ist.
Class kann nicht Objekt der Klasse "klasse" sein, weil class ein Python Schlüsselwort ist.
matott hat geschrieben:Desweiteren wäre eine Erkärung zu Modulen, Klassen und Files inerhalb von sys.path auch hilfreich.
ModulImporte?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Gast

Leonidas hat geschrieben:
matott hat geschrieben:Desweiteren möchte ich solche Aufrufe tätigen:

Code: Alles auswählen

variable = "klasse"
class = variable.__init__ ()
Wobei class Objekt der Klasse "klasse" ist.
Class kann nicht Objekt der Klasse "klasse" sein, weil class ein Python Schlüsselwort ist.
Ja ok würde da aber xxxx anstatt class stehen.
Leonidas hat geschrieben:
matott hat geschrieben:Desweiteren wäre eine Erkärung zu Modulen, Klassen und Files inerhalb von sys.path auch hilfreich.
ModulImporte?
matott.

Das ganze verwirrt mich so, dass ich erstmal auf C als Programmiersprache zurückgreifen werde.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

matott. hat geschrieben:Das ganze verwirrt mich so, dass ich erstmal auf C als Programmiersprache zurückgreifen werde.
Ja, C ist ja viel einfacher. Das würde ich auch sagen.. fast so einfach wie Assembler.

Wenn ich heute noch heimkomme, kann ich dir posten wie das einfach geht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Leonidas hat geschrieben:Wenn ich heute noch heimkomme, kann ich dir posten wie das einfach geht.
Ich halte mein Wort:

Code: Alles auswählen

#!/usr/bin/env python
# -*- encoding: latin-1 -*-

loadmodule = 'os'

def require(loadmodule):
    modul = __import__(loadmodule, globals(), locals(), [loadmodule])
    return modul

print require(loadmodule)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

matott. hat geschrieben:Das ganze verwirrt mich so, dass ich erstmal auf C als Programmiersprache zurückgreifen werde.
Und das verwirrt mich jetzt: Du willst Module laden während Dein Programm läuft ("at runtime")? Das geht in C doch gar nicht, oder? Wenn ja, dann kläre mich bitte mal auf. Ich bin echt neugierig. (Zwar kann man shared object code auf diese Weise einbetten, aber das wird in reinem C bei einem großen Projekt - und erst da könnte das lohnend werden - zur Qual (stelle ich mir zumindest so vor: Abhängigkeiten aufzudröseln, während das Programm läuft - ich weiß nicht wie das geht, aber das es einfach geht, zweifele ich an).)

@Leonidas: Jau, laß uns Python über Bord werfen. Wozu Python, wo es doch Assembler gibt??? :D

Gruß,
Christian
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

ot: Assembler ist noch viel zu dynamisch, ich sag nur
LOCHKARTE

mfg, querdenker
BlackJack

Lochkarten sind doch auch noch relativ dynamisch. Viel statischer wäre es zum Lötkolben und Kabeln zu greifen und die Programme "hart zu verdrahten". :wink:
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Genug geblödelt. Ich bin echt neugierig: Wie geht denn das jetzt in C, matott?

Gruß,
Christian
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Mal als Vermutung in den Raum geschmissen:
Vielleicht möchte er das dynamische laden von Modulen über DLLS oder OCXe realisieren. Warum auch nicht?

mfg, querdenker
Antworten