我有 3 个文件。
全局变量.py
global m_pTest
m_pTest = None
FileOne.py
import globalVar
import fileTwo
m_pTest = Class.getOutput() # Value is assigne
fileTwo.fun()
#Do anything
文件二.py
import globalVar
def fun():
intVal = m_pTest.getInt() # int value from m_pTest object
print intVal
这是我的短程序示例,当我运行它时它在 fun() 中的 fileTwo.py 中给出错误
AttributeError: 'NoneType' object has no attribute 'getInt'
有人可以解释一下这段代码有什么问题吗? 谢谢!
最佳答案
global m_pTest
不会神奇地使变量成为全局变量;相反,它在当前范围 中设置名称m_pTest
以引用全局变量(来自外部范围)。所以将它放在 globalVar.py
中基本上什么都不做。
如果只想导入变量,可以使用以下方法:
from globalVar import m_pTest
但是,当将 m_pTest
设置为不同的值时,您不会影响在 globalVar.py
中创建的原始对象,因此其他地方看不到更改。
相反,您必须照常导入 globalVar
,然后将 m_pTest
作为该模块的成员引用:
import globalVar
# reading
print(globalVar.m_pTest)
# setting
globalVar.m_pTest = 123
关于python - 全局变量未在 python 中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30392157/