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.
matott

dynamisches Klassenladen

Beitragvon matott » Sonntag 10. Juli 2005, 23:42

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
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Montag 11. Juli 2005, 06:19


CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: dynamisches Klassenladen

Beitragvon Leonidas » Montag 11. Juli 2005, 08:38

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 Modvoice
Gast

Re: dynamisches Klassenladen

Beitragvon Gast » Montag 11. Juli 2005, 11:28

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.

Beitragvon matott. » Montag 11. Juli 2005, 11:46

Das ganze verwirrt mich so, dass ich erstmal auf C als Programmiersprache zurückgreifen werde.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 11. Juli 2005, 16:38

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 Modvoice
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 11. Juli 2005, 18:25

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 Modvoice
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Montag 11. Juli 2005, 19:54

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

Beitragvon querdenker » Dienstag 12. Juli 2005, 09:28

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

mfg, querdenker
BlackJack

Beitragvon BlackJack » Dienstag 12. Juli 2005, 22:30

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:

Beitragvon CM » Dienstag 12. Juli 2005, 22:38

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

Beitragvon querdenker » Mittwoch 13. Juli 2005, 10:25

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

Wer ist online?

Mitglieder in diesem Forum: Mephisto