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?
dict aus anderem Modul kopieren
-
- 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... :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
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
@frankpython: Du hast da was mit Klassen noch nicht ganz verstanden. Methoden ruft man über die Instanz auf, also
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.
Code: Alles auswählen
fzge['pkw1'].anzeige()