Globale Variablen in anderen Modulen nutzen

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
alpha
User
Beiträge: 195
Registriert: Freitag 23. Mai 2003, 23:24
Wohnort: Ulm

Hallo Pythonfans,

ich habe gerade das folgende Problem bei dem ich einfach nicht mehr weiter komme. Ich möchte eine Variable in einem anderen importierten Modul benutzen.
Bsp:

Code: Alles auswählen

import LibTest
Variabletest = 5
LibTest = LibTest.LibTest()

LibTest.WAIT( 5 )
mein Modul:

Code: Alles auswählen

class LibTest:
    
    def WAIT(self,*args):
        global Variabletest
        print Variabletest
dabei bekomme ich immer folgende fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "I:\Ablage\Hassel\Python-Prob\classtest.py", line 5, in ?
    LibTest.WAIT( 5 )
  File "I:\Ablage\Hassel\Python-Prob\LibTest.py", line 5, in WAIT
    print Variabletest
NameError: global name 'Variabletest' is not defined
Offensichtlich macher ich was falsch :)
Habt Ihr mir eine Lösung?

Vile Grüsse
alpha
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Warum nicht so

Code: Alles auswählen

import LibTest
Variabletest = 5
LibTest = LibTest.LibTest(Variabletest)

LibTest.WAIT( 5 )
--------------------------------------
class LibTest:
    def __init__(self, var):
        self.var = var
    def WAIT(self,*args):
        print self.var
Gruß, mawe
alpha
User
Beiträge: 195
Registriert: Freitag 23. Mai 2003, 23:24
Wohnort: Ulm

Hallo Mawe,

das kann ich leider so nicht machen, weil das Ganze (die Module) erst zur Laufzeit erzeugt werden und vorher nicht bekannt sind. Gibts denn keine andere Möglichkeit den Modulen vorher deklarierte Variabelen bekannt zu machen?

alpha
ProgChild
User
Beiträge: 210
Registriert: Samstag 9. April 2005, 10:58
Kontaktdaten:

alpha hat geschrieben:Hallo Mawe,

das kann ich leider so nicht machen, weil das Ganze (die Module) erst zur Laufzeit erzeugt werden und vorher nicht bekannt sind. Gibts denn keine andere Möglichkeit den Modulen vorher deklarierte Variabelen bekannt zu machen?

alpha
Machs mit Ableitung.

So wie du das oben machen willst geht es nicht, weil das Modul LibTest seine eigenen Globals mitbringt. Du musst wenn schon anders herum importieren.

Edit: Sind für das, was du da vor hast, nicht normalerweise Funktionsparameter üblich :wink:
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Könnte man nicht auch

Code: Alles auswählen

import LibTest
LibTest.Variabletest = 5
LibTest = LibTest.LibTest()

LibTest.WAIT( 5 )
machen? Das müsste doch funktionieren, oder nicht?
Antworten