Seite 1 von 1

dict aus anderem Modul kopieren

Verfasst: Samstag 4. November 2017, 20:35
von frankpython
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?

Re: dict aus anderem Modul kopieren

Verfasst: Samstag 4. November 2017, 20:49
von Sirius3
@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.

Re: dict aus anderem Modul kopieren

Verfasst: Samstag 4. November 2017, 21:46
von Sophus
@frankpython: Ohne zu wissen, was du genau vorhast, jedoch klingt es so, als möchtest du global auf das Wörter zugreifen.

Re: dict aus anderem Modul kopieren

Verfasst: Montag 6. November 2017, 23:28
von frankpython
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

Re: dict aus anderem Modul kopieren

Verfasst: Montag 6. November 2017, 23:54
von Sophus
Durch die falsche Formatierung deines Quelltexten fällt es mir schwer ihn zu lesen. Ich bin gerade mit meinem Smartphone unterwegs.

Re: dict aus anderem Modul kopieren

Verfasst: Dienstag 7. November 2017, 08:12
von Sirius3
@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.