Abhängig von Variable anderes Objekt erzeugen

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
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

Ich hab schon ein schlechtes Gewissen, bombadiere hier das Forum mit fragen, sieht sicher so aus als ob ich nicht suchen würde... Aber ich hab einfach nichts gefunden, weder hier noch in google...

Was ich vorhabe ist anhand des Wertes einer Variable, ein bestimmtes Objekt zu erzeugen...

Code: Alles auswählen

type = {"test":"MySQLdb.connect"}
testobject = type["test"]()
sowas in der Art... Ist das möglich?
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi,

keine Ahnung, was Du wirklich machen möchtest. So etwas hier: http://www.python-forum.de/topic-7826.html ?
Außerdem: Warum überschreibst Du 'type'?

Gruß,
Christian
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

CM hat geschrieben:Hoi,

keine Ahnung, was Du wirklich machen möchtest. So etwas hier: http://www.python-forum.de/topic-7826.html ?
Außerdem: Warum überschreibst Du 'type'?

Gruß,
Christian
also ich habe verschiedene klassen definiert... und abhängig vom ert einer variable will ich ein objekt einer bestimmten klasse erzeugen.

wenn der wert eben "test" ist würde ich gerne ein objekt "testobject" der Klasse "MySQLdb.connect" erstellen...

was ich damit ausdrücken wollte ist, das am ende sowas wie
testobject = MySQLdb.connect() da stehen soll....

EDIT: also eigentlich genau das, nur eben mit Klassen, keinen Funktionen...

habe eben mal versucht mit type["test"].__init__() zu arbeiten, aber das geht auch nicht.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Dann schau mal in den Link, den ich gegeben habe. Ist diese Lösung für Dich annehmbar?
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

CM hat geschrieben:Dann schau mal in den Link, den ich gegeben habe. Ist diese Lösung für Dich annehmbar?
ja, so versuch ich es ja auch... nur versteh ich nicht wie ich die klassen erzeugen kann...

mit type["test"]() geht es nicht und mit type["test"].__init__() geht es auch nicht...
was hab ich da für ein denkfehler???

Aber ich hatte das schon so vor, mit einem dict zu bestimmen, welches object ich erstelle...
BlackJack

@würmchen: Sowohl Klassen als auch Funktionen sind "aufrufbare" Objekte. Da gibt's keinen Unterschied. Man kann Klassenobjekte auch als Fabrikfunktion für Instanzen dieser Klasse verstehen. Ich sehe also das Problem nicht so ganz!?

Was heisst ``type['test']()`` funktioniert nicht? Gib mal ein Beispiel das man nachvollziehen kann.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Ich würde einfach mal empfehlen, den Wert des Dictionarys nich als String abzulgen, sondern die Klasse. Ist doch kein Tcl:

Code: Alles auswählen

type = {"test":MySQLdb.connect}
testobject = type["test"]()
Btw.: type ist ein schlecht gewählter Name, damit überdeckst du eine built-in-Funktion.
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

es lag wohl an meinem code...

ich hab es jetzt hinbekommen...

er hat sich ständig beschwert das er das objekt nicht erstellen kann, weil es in meinem modul nicht drin vorkommt...

habe irgendwie immer noch probleme mit meinem import, aber irgendwie habe ich leider keine antwort mehr auf meine frage bekommen, desswegen verrenn ich mich da hin und wieder...

ich habe eine datei webinterface.py und eine query.py und die main methode ist in der datei webinterface.
andere module befinden sich in query.py
komischerweise funktioniert alles nur, wenn ich in webinterface.py einen import von folgenden modulen mache

import webinterface
import query

in einer anderen reihenfolge funktioniert es nicht

aber wieso muss ich in meiner datei webinterface.py in der auch die main methode drin ist, nochmal webinterface importieren...

Hier mal der Link zu meinem Beitrag über dieses Thema
http://www.python-forum.de/post-87988.html#87988


@EyDu
ja, das war nur ein beispiel, hab einen anderen Namen in meinem Script benutzt... Und ich hab es jetzt beim ausprobieren herausgefunden, das ich es nicht als string speichern darf...
BlackJack

Du arbeitest nicht zufällig mit IDLE!? Wenn Du das Modul selbst noch einmal importieren musst dann ist irgend etwas ziemlich kaputt. Das ist definitiv nicht normal.
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

hm, neee... arbeite in der commandline und mit dem vim... sonst nichts...

nutze gentoo linux... hab auch mein python schonmal neu installiert, leider ohne erfolg...
Antworten