2013-05-12 310 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