python - 全局变量未在 python 中更新

标签 python global-variables

我有 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/

相关文章:

python - 用 numpy 数组替换 pandas dataframe 变量值

c - x86汇编中全局变量的地址

python - Python 的 open() 是否读取未刷新的缓冲区?

python - 更改由 nose 测试生成器创建的测试的名称

python - 使用 pandas 进行实时数据处理

c# - ASP.NET MVC 4 中的全局变量

javascript - 函数退出后全局变量的值错误

delphi - 当我直到运行时才知道长度时,如何声明数组?

c++ - 静态全局变量初始化顺序

python - 在图像对齐之前先进行亮度/对比度校正,反之亦然?