スタンドアロンモジュールからクラス内でインスタンス化されたオブジェクトを利用したいと思います。オブジェクト参照をグローバルにすることでこれを実行しようとしています。新しいオブジェクトを作成するのではなく、現在のオブジェクトを利用したいと思います。
モジュールファイルにこのコードがあると仮定します
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
クラスの外部でグローバル変数を宣言する必要があります。
## 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
を記述する必要はありません。