dict aus anderem Modul kopieren

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
frankpython
User
Beiträge: 7
Registriert: Montag 4. August 2014, 17:37

Modul fzd.py: Das dict "alle_fzge" enhält als key die Kurz- und als value die Langnamen aller Fahrzeuge, die bisher von mir definiert wurden.
Modul Fb.py: 1) import fzd
. . . . . . . . . 2) from fzd import alle_fzge
. . . . . . . . . 3) Durch input()-Abfrage wird ein Kurzname ausgewählt und in die Variable "fzg" gelegt (= string).

Frage: Wie kann ich eine Kopie der Fzg-Daten in Modul Fb.py mit "fzg" aus Modul fzd.py holen?
Klar ist, dass eingetippt "fzd.<kurzname>.copy()" den Job erledigt, aber es gelingt mir nicht, die Variable "fzg" in dieses Kommando
einzubauen.
Schon versucht:
1) Im dict "alle_fzge" zum key (=Kurzame) den value (Langname, fzd.kurzname.copy()) als tuple hingefügt: NameError: name 'fzd' is not defined
2) Nach Auswahl: from fzd import fzg: ImportError: cannot import name 'fzg'
3) variable = fzd.alle_fzge[fzg].copy(): NameError: name 'fzd' is not defined
4) variable = fzd.fzg['AA']: AttributeError: module 'fzd' has no attribute 'fzg'

Kann mir jemand helfen?
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@frankpython: ich verstehe nicht, was Du versuchst zu tun. Kannst Du ein Beispielprogramm posten, das das was geht macht und für das was nicht geht wenigstens die gewünschte Ausgabe enthält.
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

@frankpython: Ohne zu wissen, was du genau vorhast, jedoch klingt es so, als möchtest du global auf das Wörter zugreifen.
frankpython
User
Beiträge: 7
Registriert: Montag 4. August 2014, 17:37

Wenn ich jetzt mein damaliges Problem genauer schildern will, verstehe ich mein eigenes Problem nicht mehr... :o :K
So funktionierts jetzt:
Modul fzgdaten.py:
class Pkw: # methoden daten_eingabe(self), anzeige(self)
Modul Funktionen.py:
import fzgdaten
fzge = shelve.open('Fahrzeuge', flag='c', writeback=TRUE)
klist = list(fzge.keys()) # => ['pkw1'] mehr gibts noch nicht
fzge['pkw2'] = fzdat.Pkw.daten_eingabe(pkw1) # pkw1 dient als self, wird aber nicht verwendet. 'kurznam':'pkw2' =eigenes key:val-Paar
fzgdaten.Pkw.anzeige(fzge['pkw1']) # schön formatierte Datenausgabe
fzdat = fzge[fzg] # fzg = string von input() (Auswahl eines bestehenden Datensatzes
fzge.close()

Bitte entschuldigt, dass ich so ungeduldig sofort um Hilfe gerufen habe und danke für die Beiträge
MfG Frankpython
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

Durch die falsche Formatierung deines Quelltexten fällt es mir schwer ihn zu lesen. Ich bin gerade mit meinem Smartphone unterwegs.
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@frankpython: Du hast da was mit Klassen noch nicht ganz verstanden. Methoden ruft man über die Instanz auf, also

Code: Alles auswählen

fzge['pkw1'].anzeige()
Wenn `daten_eingabe` kein `self` braucht, dann ist das eine Klassenmethode, oder gar keine Methode der Klasse, sondern eine eigenständige Funktion, je nachdem. `fzdat`, `pkw1` und `fzg` sind nicht definiert, `klist` wird nicht gebraucht. Alle Deine Namen bestehen aus kryptischen Abkürzungen, das kann niemand lesen, selbst Du, wenn Du in zwei Wochen nochmal draufschaust, wirst damit Probleme haben. Verwende aussagekräftige Namen ohne Abkürzungen.
Antworten