我有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'
有人可以解释这段代码中的错误吗? 谢谢!
答案 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