我已经阅读了几个关于使变量成为全局变量并使用 class.var 功能在类之间共享它们的答案,但这些似乎都不适用于我的示例。
我只有一个文件:app.py
它实例化了多个类。但是,我想要全局化的变量不在一个类中,它只是在主脚本中。然后,当我在其中一个类中的函数中键入 global globvar 时,我收到错误:`
NameError: global name 'globvar' is not defined.
我怎样才能通过引用将此变量传递给类(我知道,不是pythonic语言),以便类可以修改它但其他类可以访问它,或者使它成为全局以便所有类都可以访问它?
编辑没有缩进的文件底部:
app = MyApp(False)
logFile = open('C:/Python26/temp/test.txt', 'w')
globvar = 7
ser = serial.Serial('com5',115200,timeout=0.01)
app.MainLoop()
然后在我的第一堂课中,我有:
class MyApp(wx.App):
def MainLoop(self):
line = ser.readline()
if len(line) > 2:
global globvar
globvar = line
在我的第二堂课中,我有:
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