web-dev-qa-db-ja.com

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
8
PrestonDocks

クラスの外部でグローバル変数を宣言する必要があります。

## 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を記述する必要はありません。

9
cengizkrbck