我已经阅读了几个有关使变量为全局变量并使用class.var功能在类之间共享它们的答案,但这些变量在我的示例中似乎都不起作用。Python名称空间和全局变量
我只有一个文件:app.py
它实例化多个类。然而,我想让全局变量不在类中,它只是在主脚本中。后来,当我在一个函数里面的一个类类型的全局变量globvar,我得到的错误:`
NameError: global name 'globvar' is not defined.
我怎么能按引用这个变量传递给类(我知道,并不是Python的语言)以便类可以修改它,但其他类可以访问它,或者使其成为全局的,以便所有类都可以访问它?
编辑底部文件没有缩进:
app = MyApp(False)
logFile = open('C:/Python26/temp/test.txt', 'w')
globvar = 7
ser = serial.Serial('com5',115200,timeout=0.01)
app.MainLoop()
然后在我的第一个I类有:
class MyApp(wx.App):
def MainLoop(self):
line = ser.readline()
if len(line) > 2:
global globvar
globvar = line
而且在我的第二个I类有:
class MyFrame(wx.Frame):
def OnMove(self, event):
pos = event.GetPosition()
global globvar
self.posCtrl.SetValue("%s, %s" % (globvar, pos.y))
这些都在同一个文件中。错误文本是:
Traceback (most recent call last):
File "C:\Program Files (x86)\wxPython2.8 Docs and Demos\samples\mainloop\mainloop.py", line 66, in OnMove
self.posCtrl.SetValue("%s, %s" % (globvar, pos.y))
NameError: global name 'globvar' is not defined
,因为你已经在你的主脚本宣布它的变量已经全球。在你的问题中没有任何代码或回溯,所以很难猜测你实际上遇到了什么问题。 – kindall