开发者

Problems trying to access to a global var

I know how to use the global variables when they are defined in a class, but I have a global variable in a main.

If I want to use it inside a class, which would be the import to access it?

My main is something like this

Main.py:

from EvolutionaryAlgorithm import EvolutionaryAlgorithm
initialTimeMain = 0

if __name__ == '__main__':
    evolutionaryAlgorithm= EvolutionaryAlgorithm()
.
.
开发者_如何学Python

and my EvolutionaryAlgorithm class has a method which uses the initialTimeMain variable. the problem is when I add this import in the EvolutionaryAlgorithm:

EvolutionaryAlgorithm.py

import Main 

because when I run the script, an error appears

from EvolutionaryAlgorithm import EvolutionaryAlgorithm ImportError: cannot import name EvolutionaryAlgorithm

the import isn't recognized anymore


You have a case of circular imports, short-term solution is to move import statement inside the if clause:

initialTimeMain = 0

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

A better, long-term solution would be to refactor your code so that you don't have circular imports or initialTimeMain is defined in the EvolutionaryAlgorithm.py, which of course would be available in Main.py with your existing import strategy.

Old answer:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜