我對Python比較新,我在導入變量以在另一個類中使用它時遇到了一些麻煩。我也看過關於這個主題的其他幾個問題,並試圖讓它工作,但似乎我早期設置這個程序的方式可能是問題。我將簡化這是怎麼回事所以有少讀...如何在不實例化類的情況下從另一個文件讀取實例變量?
Server.py:
import Game
class Server():
def __init__(self):
# Server connection details here
self.test = 5
self.game = Game()
def serve(self):
# Client processing, etc.
self.game.game_loop()
if __name__ == "__main__":
server = Server()
server.serve()
Game.py:
class Game():
def __init__(self):
# Other variables...
def game_loop(self):
# To reference server's instance variables
from Server import server
print test
在這個例子中,我試圖從Server的服務器實例引用變量「test」。值得注意的是,如果我將兩個類放在同一個文件中,然後在結尾處刪除if語句,但是我寧願沒有一個文件那麼長,這也可以工作:
因爲這些是在單獨的文件中,如果不刪除Server.py中的if語句,我無法從「服務器」獲取實例變量。當我刪除它時,由於我正在做的其他事情,我得到套接字錯誤......我需要使它只有一個服務器對象(並且它的類只被「調用」一次),但是它「 d真的很方便,能夠引用這些實例變量,而不會在每次運行時將它們傳遞到我的Game類中...
部分原因肯定是我的錯,因爲我將程序設置錯了......但我太過分了,從此開始。有什麼辦法可以採取這種設置並閱讀這些變量?
您需要'從遊戲導入遊戲' - 至少部分問題在於您的考試ple,'Game'是包含* class *'Game'的*模塊*。所以,你不能做'Game()',因爲模塊不可調用。或者,你可以做'self.game = Game.Game()' – mgilson 2013-03-03 02:01:40
哎呀,謝謝你。它實際上就是這樣,但我把兩個類放在同一個文件中,然後忘了編輯它,當我在這裏發佈。 – MattM 2013-03-03 02:26:22