【问题标题】:Problems trying to access to a global var尝试访问全局变量的问题
【发布时间】:2010-10-19 17:11:13
【问题描述】:

我知道在类中定义全局变量时如何使用它们,但我在 main 中有一个全局变量。
如果我想在一个类中使用它,访问它的导入是什么?

我的主要是这样的

Main.py:

from EvolutionaryAlgorithm import EvolutionaryAlgorithm
initialTimeMain = 0

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

我的 EvolutionaryAlgorithm 类有一个使用 initialTimeMain 变量的方法。 问题是当我在 EvolutionaryAlgorithm 中添加这个导入时:

进化算法.py

import Main 

因为我运行脚本的时候出现了错误

从进化算法导入 进化算法导入错误: 无法导入名称 进化算法

导入不再被识别

【问题讨论】:

  • 你尝试了什么?您尝试了哪些进口产品,结果如何。这个问题本身并不愚蠢。但是,请,请,请尝试一些东西并在询问之前发布您尝试过的代码。

标签: python global-variables scope


【解决方案1】:

您有一个循环导入的情况,短期解决方案是将导入语句移到 if 子句中:

initialTimeMain = 0

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

一个更好的长期解决方案是重构您的代码,以便您没有循环导入或在EvolutionaryAlgorithm.py 中定义initialTimeMain,当然在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

【讨论】:

  • @Federico:主要进口?你什么意思?
  • @Federico:请使用不起作用的代码更新您的问题。并且请非常非常清楚“无法运行代码”。这是什么意思?
  • 我的意思是导入有一个 main.py 的 Main.py
  • 为什么我的问题是-3?
  • @Federico:你现在有-2,我想有几个人不认为你的问题不清楚或没有用。我想是在你发布澄清之前。
猜你喜欢
  • 2011-10-06
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多