Modulobjekt aus Namen gewinnen

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
Jan-Peer
User
Beiträge: 166
Registriert: Dienstag 2. Oktober 2007, 10:55

Dienstag 8. Januar 2008, 17:49

Hallo,

folgender Code:

Code: Alles auswählen

import jpm.jpmplugin

a = jpm.jpmplugin.JPMPlugin
'a' enthält also lediglich die Klasse, nicht eine Instanz. Jetzt kann ich mir ja mit a.__module__ den Namen des Moduls ausgeben lassen, in diesem Fall 'jpm.jpmplugin'. Was mich interessiert ist aber eine Referenz auf das Modulobjekt selbst. Wie komme ich da ran?

Vielen Dank schon mal
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Dienstag 8. Januar 2008, 18:08

jpm.jpmplugin ist eine Referenz auf das Modul ;)
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Dienstag 8. Januar 2008, 18:18

Und wenn man unbedingt den Namen benutzen will:

Code: Alles auswählen

import sys
module = sys.modules[a.__module__]
Jan-Peer
User
Beiträge: 166
Registriert: Dienstag 2. Oktober 2007, 10:55

Dienstag 8. Januar 2008, 18:25

ja, gut. Aber die kenne ich an der Stelle, wo ich es brauche nicht. Ich importiere verschiedene Module und registriere einige - nicht alle - Klassen daraus in einer Liste. Später habe ich dann den Punkt, daß ich ermittele, welche der registrierten Klassen ich instanziere, und daß ich schauen möchte, ob in dem Modul, wo ich die Klasse hergenommen habe, eine bestimmte andere Klasse existiert.

Das ist hoffentlich etwas klarer (oder auch nicht :roll: )
Jan-Peer
User
Beiträge: 166
Registriert: Dienstag 2. Oktober 2007, 10:55

Dienstag 8. Januar 2008, 18:27

@Trundle

Genau das wollte ich wissen, vielen Dank.

Trotzdem werde ich noch mal ein paar Gedanken an mein Design verwenden. Beim Beschreiben eben kam es mir doch reichlich konfus vor.
Antworten