1

2つのファイルを取得しました:

最初の呼び出し: main.py

import side

var = 1

side.todo()

2 番目の呼び出し: side.py

import main


def todo():
    print "printing variable from MAIN: %s" %(main.var)

main.py を実行すると、エラーが発生します。

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

Pythonでは、そのような方法で変数を借りて使用することは許可されていませんか?

これに関連するドキュメントを検索しようとしましたが、この問題に関連するものは見つかりませんでした。

確かに、これを行う別の方法はありますか?

4

2 に答える 2

2

問題は「循環インポートができない」ことではなく、定義される前に名前を使用できないことですside.todo()スクリプトが実行されるとすぐには発生しない場所に呼び出しを移動するかmain.var、3 番目のモジュールに移動します。

于 2012-10-06T19:03:51.527 に答える
0

迅速で醜い解決策は、import ステートメントを、side.py で必要になるまで実行されない場所に移動することです。

def todo():
    import main
    print "printing variable from MAIN: %s" %(main.var)

しかし、私はそれに対してアドバイスします。この例は不自然ですが、特定のケースに対するより良い解決策を見つけることができると確信しています。

于 2012-10-06T19:07:38.057 に答える