Seite 1 von 1

dynamisches Klassenladen

Verfasst: Sonntag 10. Juli 2005, 23:42
von 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.

Verfasst: Montag 11. Juli 2005, 06:19
von jens

Re: dynamisches Klassenladen

Verfasst: Montag 11. Juli 2005, 08:38
von Leonidas
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?

Re: dynamisches Klassenladen

Verfasst: Montag 11. Juli 2005, 11:28
von 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?

Verfasst: Montag 11. Juli 2005, 11:46
von matott.
Das ganze verwirrt mich so, dass ich erstmal auf C als Programmiersprache zurückgreifen werde.

Verfasst: Montag 11. Juli 2005, 16:38
von Leonidas
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.

Verfasst: Montag 11. Juli 2005, 18:25
von Leonidas
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)

Verfasst: Montag 11. Juli 2005, 19:54
von CM
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

Verfasst: Dienstag 12. Juli 2005, 09:28
von querdenker
ot: Assembler ist noch viel zu dynamisch, ich sag nur
LOCHKARTE

mfg, querdenker

Verfasst: Dienstag 12. Juli 2005, 22:30
von 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:

Verfasst: Dienstag 12. Juli 2005, 22:38
von CM
Genug geblödelt. Ich bin echt neugierig: Wie geht denn das jetzt in C, matott?

Gruß,
Christian

Verfasst: Mittwoch 13. Juli 2005, 10:25
von querdenker
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