2017-01-24 3 views
-1

Ich möchte auf Variable zugreifen mit String von einer Datei zur anderen Datei.Wie kann man auf eine Variable zugreifen, die einen String aus einem anderen Bereich verwendet?

Hier ist mein Code.

Datei a.py:

aa = 12 
m = test('aa') 

Datei class.py:

class test: 
    def __init__(self,string): 
     try: 
      self.variable = globals()[string] 
     except KeyError: 
      print('there is no variable named ' + string) 

Above test.py Code gibt Sequenz string 'gibt es keine Variable mit dem Namen blrblr'. Ich denke, wenn Python lexikalischen Geltungsbereich hat, sollte der Geltungsbereich, wenn test() Klasse zuerst aufgerufen wird, denselben Bereich mit 'aa' haben, aber es nicht. Wie kann ich das beheben?

+0

In was 'globals' denken Sie, dass' class.py' suchen wird? Das ist der Grund, warum Sie im Produktionscode niemals Dinge wie 'globals()' (oder 'locals()' usw.) sehen. Sie haben fast sicher ein [XY Problem] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). – TigerhawkT3

+0

Der lexikalische Bereich von 'class test' ist' class.py', nicht 'a.py', so dass die Variablen in' a.py' nicht angezeigt werden. – tdelaney

+0

Off-topic: Man würde wahrscheinlich nie ein Modul zum Importieren "class.py" nennen wollen, da man "import class" nicht ausführen kann, da "class" ein Python-Schlüsselwort ist. – martineau

Antwort

1

globals() gibt ein Wörterbuch der Attribute für das aktuelle Modul zurück. Der übliche Zugang zu Code in einer anderen Datei ist import. Zum Beispiel

import a 

Jetzt können Sie Variablen aus a.py direkt im Code zugreifen:

print(a.aa) 

Zwar gibt es Möglichkeiten, es zu tun, ist es nicht ratsam zu versuchen, ist eine Zeichenfolge als Variablennamen zu verwenden. Stattdessen sollten Sie eine Datenstruktur wie ein Wörterbuch verwenden.

Verwandte Themen