2014-04-03 49 views
-1

我正在嘗試爲Skype開發一個機器人,並且我在某些類中遇到了困難,以及如何僅使用一個實例而不是在另一個文件中創建新實例。在不創建新實例的情況下在其他類中使用其他類功能

我在其中機器人從運行很多文件,我想只能通過Global.py文件使用一個實例:

from classes import class_Core 
from classes import class_Skype 
from classes import class_Message 
from classes import class_Commands 

global Core, Skype, Message, Commands 

Core = class_Core.Core() 
Skype = class_Skype.Skype() 
Message = class_Message.Message() 
Commands = class_Commands.Commands() 

我也有一個Skypebot.py文件,該文件導入Global.py文件:

import Global 

但是,當我運行Skypebot.py並使用Skype類中的某個功能時:

class Skype: 
    def __init__(self): 
     Core.Log("Initialising Skype!") 

我得到一個回溯:

Traceback (most recent call last): 
    File "C:\Users\Connor\Desktop\Skypebot 0.4\Skypebot.py", line 1, in <module> 
    import Global 
    File "C:\Users\Connor\Desktop\Skypebot 0.4\Global.py", line 9, in <module> 
    Skype = class_Skype.Skype() 
    File "C:\Users\Connor\Desktop\Skypebot 0.4\classes\class_Skype.py", line 8, in 
__init__ 
    Core.Log("Initialising Skype!") 
NameError: global name 'Core' is not defined 

任何人可以幫助我在這?謝謝!

+0

可能重複http://stackoverflow.com/questions/19358582/how-do-i-access-inherited-變量來自另一個模塊當它們被改變時) –

+0

在您正在使用它的函數中去除那些全局變量。 – Arvind

+0

我不這麼認爲,@JoelCornett,但是謝謝!我沒有試圖繼承任何函數,只是在其他類中使用Global.py文件中的實例,而不在類中創建新實例。 –

回答

0

您在skypebot.py想要這個,而不是import Global

from Global import Core 

你也不需要global Core, Skype, Message, Commands線,因爲這些變量已經被在中Global.py全球範圍內聲明的,如doukremt提到。如果你想訪問/修改全局變量實例的函數或方法,將使用「global」關鍵字。

var = 3 
def some_func(): 
    var = 2 # This creates a locally-scoped variable named var, and assigns it to 2. 

def some_other_func(): 
    global var 
    var = 2 # This sets the globally-scoped variable var to 2. 
的[我如何訪問從另一個模塊繼承的變量時,他們在父母改變?](
相關問題