Seite 1 von 1

Abhängig von Variable anderes Objekt erzeugen

Verfasst: Mittwoch 23. Januar 2008, 13:09
von würmchen
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?

Verfasst: Mittwoch 23. Januar 2008, 13:21
von CM
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

Verfasst: Mittwoch 23. Januar 2008, 13:25
von würmchen
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.

Verfasst: Mittwoch 23. Januar 2008, 13:41
von CM
Dann schau mal in den Link, den ich gegeben habe. Ist diese Lösung für Dich annehmbar?

Verfasst: Mittwoch 23. Januar 2008, 13:52
von würmchen
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...

Verfasst: Mittwoch 23. Januar 2008, 13:52
von 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.

Verfasst: Mittwoch 23. Januar 2008, 14:00
von EyDu
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.

Verfasst: Mittwoch 23. Januar 2008, 14:19
von würmchen
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...

Verfasst: Mittwoch 23. Januar 2008, 14:41
von 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.

Verfasst: Mittwoch 23. Januar 2008, 15:25
von würmchen
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...