2013-05-12 188 views
4

我想在獨立模塊的類內部瞬間使用對象。我試圖通過使對象引用全局來做到這一點。我想我想利用當前的對象,而不是創建一個新的對象。Python全局對象變量

假設我有這樣的代碼的模塊文件

import moduleFile 
class A(): 
    def checkAdmin(self): 
     global adminMenu 
     adminMenu = SRMadminMenu() 

class SRMadminMenu() 
    def createAdminMenu(self): 
     pass 
     ####Put code to create menu here#### 

    def createSubMenu(self,MenuText): 
     pass 
     ####Create a submenu with MenuText#### 

在moduleFile.py我有這樣的代碼

def moduleFile_Admin_Menu(): 
    global adminMenu 
    adminMenu.createSubMenu("Module Administration") 

在moduleFile.py代碼給我下面的錯誤。

NameError: global name 'adminMenu' is not defined 
+0

應該'Import'不'import'? ,還有'adminMenu'聲明在哪裏? – karthikr 2013-05-12 19:43:44

+0

對不起,我更正了錯字。 adminMenu在A類中的checkAdmin()中聲明。 – PrestonDocks 2013-05-12 19:50:36

+0

您正在將全局標記爲'global adminMenu'。你需要在某個地方聲明它。例如,'adminMenu = None'或其他。例如 - 僅低於'進口moduleFile' – karthikr 2013-05-12 19:52:06

回答

6

您必須在類之外聲明全局變量。

## Code file something.py 
import moduleFile 

adminMenu = None 

class A(): 
    def checkAdmin(self): 
     global adminMenu 
     adminMenu = SRMadminMenu() 

然後moduleFile.py,

from something import adminMenu 

def moduleFile_Admin_Menu(): 
    global adminMenu 
    adminMenu.createSubMenu("Module Administration") 

注意:如果你將不會改變adminMenu變量,你不必寫global adminMenu