2010-10-19 158 views
0

我知道如何在全局變量中使用全局變量,但在全局變量中有一個全局變量。
如果我想在一個類中使用它,這將是訪問它的導入?試圖訪問全局變量的問題

我主要是這樣

Main.py:

from EvolutionaryAlgorithm import EvolutionaryAlgorithm 
initialTimeMain = 0 

if __name__ == '__main__': 
    evolutionaryAlgorithm= EvolutionaryAlgorithm() 
. 
. 

和我EvolutionaryAlgorithm類有它使用initialTimeMain變量的方法。 的問題是,當我添加此導入在EvolutionaryAlgorithm:

EvolutionaryAlgorithm.py

import Main 

,因爲當我運行該腳本,一個錯誤出現

from EvolutionaryAlgorithm import EvolutionaryAlgorithm ImportError: cannot import name EvolutionaryAlgorithm

無法識別進口已有

+0

那你試試?你嘗試了哪些進口產品,結果如何。這個問題本身並不愚蠢。但是,請您在嘗試之前嘗試一些併發布您嘗試的代碼。 – 2010-10-19 17:26:23

回答

3

你有一個循環導入的例子,短期的解決方法是在if語句裏面移動import語句:

initialTimeMain = 0 

if __name__ == '__main__': 
    from EvolutionaryAlgorithm import EvolutionaryAlgorithm 
    evolutionaryAlgorithm= EvolutionaryAlgorithm() 

一個更好的,長期的解決辦法是重構你的代碼,這樣你就不用進口的圓形或initialTimeMainEvolutionaryAlgorithm.py,這當然會提供Main.py與您現有的進口戰略確定。

老答案:

a.py: 

globalvar = 1 
print(globalvar)    # prints 1 
if __name__ == '__main__': 
    print(globalvar)   # prints 1 

b.py: 

import a 
print(a.globalvar)   # prints 1 
+0

但是當我輸入Main時,我無法運行代碼 – Federico 2010-10-19 17:28:12

+1

@Federico:import main?你什麼意思? – SilentGhost 2010-10-19 17:30:36

+0

@Federico:請使用無效的代碼更新您的問題。請在「無法運行代碼」上非常清楚。那是什麼意思? – 2010-10-19 17:33:52