2016-04-17 15 views
-1

からグローバル変数をインポートしながら、「モジュール」オブジェクトが属性を持っていない私はこのような2つのpythonファイルが持っているははAttributeErrorを得た:</p> <pre><code># first.py global x if __name__ == "__main__": x = 'test_var' </code></pre> <p>と::別のファイル

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

を、私はこのスクリプトを実行します。

import second 
second.XX.print_x() 

そして、私はこのエラーを取得:

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

何が問題なのでしょうか?それはあなたのエントリポイントではなく、コードを直接Xが定義されることはありませんつまり、呼び出されませんので、first.py

+0

は、 'XX.print_xは()'動作してはならない、それがあるべき 'second.XX.print_x()' – Natecat

+0

あなたが正しいです@Natecat!私のタイプミス! –

答えて

0

コードが実行されることはありません。あなたのエントリーポイントとしてfirst.pyを使うか、xの宣言をアクセスする前に呼び出すメソッドに入れます。 1については

+0

これに加えて、OPは 'if __name__ ==" __main __ "'トリックを理解していません。私は 'first.py'の始めに' print __name__'を挿入し、 'first.py'と他のスクリプトとの違いを見てみることをお勧めします。 –

関連する問題