全局变量没有在python中更新

时间:2015-05-22 08:43:35

标签: python global-variables

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

这是我的简短程序样本,当我运行它时会在fileTwo.py中给出错误()

 AttributeError: 'NoneType' object has no attribute 'getInt'

有人可以解释这段代码中的错误吗? 谢谢!

2 个答案:

答案 0 :(得分:4)

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 作为该模块的成员引用:

Page.Master.FindControl("controlID")

答案 1 :(得分:3)

为什么要使用全球?

# FileOne.py
import fileTwo

value = Class.getOutput() 
fileTwo.fun(value)
#Do anything

# fileTwo.py
def fun(value):
    intVal = value.getInt()   
    print intVal