全局变量未在 python 中更新
Global variable is not updating in python
我有 3 个文件。
globalVar.py
global m_pTest
m_pTest = None
FileOne.py
import globalVar
import fileTwo
m_pTest = Class.getOutput() # Value is assigne
fileTwo.fun()
#Do anything
fileTwo.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
为什么要使用全局?
# FileOne.py
import fileTwo
value = Class.getOutput()
fileTwo.fun(value)
#Do anything
# fileTwo.py
def fun(value):
intVal = value.getInt()
print intVal
我有 3 个文件。
globalVar.py
global m_pTest
m_pTest = None
FileOne.py
import globalVar
import fileTwo
m_pTest = Class.getOutput() # Value is assigne
fileTwo.fun()
#Do anything
fileTwo.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
为什么要使用全局?
# FileOne.py
import fileTwo
value = Class.getOutput()
fileTwo.fun(value)
#Do anything
# fileTwo.py
def fun(value):
intVal = value.getInt()
print intVal