Variable in mehreren Modulen verwenden!?

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
t0m

Hallo,

ist es möglich eine Variable in mehreren Modulen zu lesen und zu schreiben? Wenn ich from module imort variable mache, bekomm ich ja nur den Anfangswert so wie ich ihn in das Modul geschrieben hab.

Gibts da eine Lösung? Ich will ungern Ini-Dateien oä verwenden :)

mfg,
Tom
joerg
User
Beiträge: 188
Registriert: Samstag 17. August 2002, 17:48
Wohnort: Berlin
Kontaktdaten:

Hallo Tom,
t0m hat geschrieben:... Wenn ich from module imort variable mache, bekomm ich ja nur den Anfangswert so wie ich ihn in das Modul geschrieben hab.
Hast Du das jetzt geraten oder wirklich ausprobiert? Bei mir funktioniert nämlich das gewünschte Verhalten.

Ich nehme allerdings an, daß Du nicht wirklich ein Objekt änderst, sondern ein neues an den gleichen Namen zuweist. Probiere doch mal, ein veränderliches Objekt zu nehmen, z.B. eine Liste, der Du in einem Modul ein Element anhängst, diese Änderung sollte überall sichtbar sein!

Viel Glück!

Jörg
"Sie sind nicht berechtigt, unrechtmäßige Kopien dieses Datenträgers zu erstellen." - Microsoft-Weisheit auf einer CD von MS-VisualC++-6.0
genrich
User
Beiträge: 91
Registriert: Sonntag 27. Juni 2004, 17:46

t0m

Hi,

also sagen wir mal ich hab das Modul vars mit dem Code:

Code: Alles auswählen

myVar = -1
jetzt starte ich ein anderes Modul mit folgenden Code:

Code: Alles auswählen

import vars
vars.myVar = 2
Alles schön und gut, aber wenn ich jetzt noch ein Modul starte:

Code: Alles auswählen

import vars
print vars.myVar
wird -1 ausgegeben.
Gast

Hi genrich,

da wars Du wohl ein bisschen schneller aus ich :)
Ich werd mir das mal anschauen.

Danke!
t0m

Das funktioniert leider auch nicht :(
joerg
User
Beiträge: 188
Registriert: Samstag 17. August 2002, 17:48
Wohnort: Berlin
Kontaktdaten:

Hallo Tom,
ich habe das Beispiel mal probiert. Das zweite Modul habe ich vars2.py genannt. Jetzt mache ich folgendes:

Code: Alles auswählen

>>> import vars
>>> print vars.myVar
-1
>>> import vars2
>>> print vars.myVar
2
Was willst Du mehr?

Oder meinst Du etwa das Abspeichern von Werten, um es in einem anderen Pythonprozeß wieder lesen zu können? Dafür würde ich die Module pickle oder shelve oder auch ConfigParser (der Name täuscht, der schreibt auch) nehmen, oder Du baust Dir selber was...

Jörg
"Sie sind nicht berechtigt, unrechtmäßige Kopien dieses Datenträgers zu erstellen." - Microsoft-Weisheit auf einer CD von MS-VisualC++-6.0
t0m

joerg hat geschrieben:Hallo Tom,
Oder meinst Du etwa das Abspeichern von Werten, um es in einem anderen Pythonprozeß wieder lesen zu können? Dafür würde ich die Module pickle oder shelve oder auch ConfigParser (der Name täuscht, der schreibt auch) nehmen, oder Du baust Dir selber was...
Ja das mein ich! Aber dazu die Variable doch in einer Datei gespeichert werden oder?
joerg
User
Beiträge: 188
Registriert: Samstag 17. August 2002, 17:48
Wohnort: Berlin
Kontaktdaten:

t0m hat geschrieben:Ja das mein ich! Aber dazu die Variable doch in einer Datei gespeichert werden oder?
Ja, sicher! Das Dateisystem ist die einzige Stelle, wo Daten lange genug überleben können, vielleicht sogar einen Systemneustart. ;-)

Ich würde ConfigParser nehmen, und bei komplizierteren strukturierten Daten sowas wie pickle.

Jörg
"Sie sind nicht berechtigt, unrechtmäßige Kopien dieses Datenträgers zu erstellen." - Microsoft-Weisheit auf einer CD von MS-VisualC++-6.0
Gast

Hi,

ich werds dann mal mit ConfigParser versuchen (sind nur 2 Integer-Werte). :)

greetz,
Tom
Antworten