Проблемы при попытке доступа к глобальной переменной - PullRequest
0 голосов
/ 19 октября 2010

Я знаю, как использовать глобальные переменные, когда они определены в классе, но у меня есть глобальная переменная в главной.
Если я хочу использовать его внутри класса, какой будет импорт для доступа к нему?

Моя главная что-то вроде этого

Main.py:

from EvolutionaryAlgorithm import EvolutionaryAlgorithm
initialTimeMain = 0

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

и мой класс EvolutionaryAlgorithm имеет метод, который использует переменную initialTimeMain. проблема заключается в том, когда я добавляю этот импорт в EvolutionaryAlgorithm:

EvolutionaryAlgorithm.py

import Main 

потому что когда я запускаю скрипт, появляется ошибка

из импорта EvolutionaryAlgorithm EvolutionaryAlgorithm ImportError: не может импортировать имя EvolutionaryAlgorithm

импорт больше не распознается

1 Ответ

3 голосов
/ 19 октября 2010

У вас есть случай циклического импорта, краткосрочное решение - переместить оператор импорта в предложение if:

initialTimeMain = 0

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

Лучшим долгосрочным решением будет рефакторинг вашего кода, чтобы у вас не было циклического импорта, или initialTimeMain определено в EvolutionaryAlgorithm.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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...