2016-04-17 22 views
-1
Datei importieren

Ich habe zwei Python-Dateien wie folgen aus:bekamen Attribute: ‚Modul‘ Objekt kein Attribut hat, während globalen Variable von einer anderen

# first.py 
global x 
if __name__ == "__main__": 
    x = 'test_var' 

und:

# second.py 
import first 
class XX(object): 
    @staticmethod 
    def print_x(): 
     print first.x 

ich dieses Skript:

import second 
second.XX.print_x() 

Und ich bekomme diese Fehlermeldung:

AttributeError: 'module' object has no attribute 'x' 

Irgendeine Idee, was schief läuft?

+0

Für eine, 'XX.print_x()' sollte nicht funktionieren, sollte es 'second.XX.print_x()' – Natecat

+0

@Natecat Sie haben Recht! mein Tippfehler! –

Antwort

0

Der Code in first.py läuft nie, weil es nicht Ihr Einstiegspunkt ist und der Code nicht direkt aufgerufen wird, dh x ist nie definiert. Verwenden Sie first.py als Einstiegspunkt oder fügen Sie die Deklaration von x in eine Methode ein, die Sie aufrufen, bevor Sie versuchen, darauf zuzugreifen.

+0

Um hinzuzufügen, hat OP den 'if __name__ ==" __main __ "' Trick nicht verstanden. Ich schlage vor, "print __name__" am Anfang von "first.py" einzufügen und den Unterschied zwischen der direkten Ausführung von "first.py" und dem anderen Skript zu sehen. –