11

我想使用已在独立模块的类内部实例化的对象。我试图通过使对象引用全局来做到这一点。我想我想利用当前对象而不是创建一个新对象。

假设我在模块文件中有此代码

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
4

1 回答 1

14

您必须在类之外声明全局变量。

## 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

于 2013-05-14T14:51:09.320 回答