我已經閱讀了幾個有關使變量爲全局變量並使用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