2015-09-03 48 views
3

我正在學習python 2.7,並正在寫文字冒險遊戲(比作Zork)來練習。我決定試用模塊化的方式來編寫它,因爲會有很多功能可以按照組織和清晰度分成不同的文件。爲什麼我的對象在我不打算的時候調用傳遞參數?

在Windows 7上使用Visual Studio 2015,我製作了一個包含3個文件的解決方案:MainGame.py,Session.py和Verbs.py。

  • MainGame.py是用於運行遊戲的主要python文件。
  • Session.py是一個實例存儲玩家信息的類文件。
  • Verbs.py用於分析玩家輸入的功能。

這裏顯示的只是測試是否可以傳遞一個對象給我需要分析播放器數據的函數。

Main.py

from Session import Session 
from verbs import showX 

s = Session() 

showX(s) 

Session.py

class Session(object): 
    def __init__(self): 
     x = 5 

    def getX(): 
     return x 

Verbs.py

def showX(s): 
    print s.getX() 

當我去運行此我得到:

TypeError was unhandled by user code 

getX() takes no arguments (1 given) 

當我調用showX中的getX方法時,我期望不會傳遞任何東西,但我是。

我的問題是;我通過了什麼?這種情況有什麼問題?

回答

5

類方法總是會在調用開始時添加一個額外的參數,以表示方法被調用的對象。這就是爲什麼他們在開始時應始終有一個self參數。

你可能想Session.py看起來像這樣:

class Session(object): 
    def __init__(self): 
     self.x = 5 

    def getX(self): 
     return self.x 
+0

謝謝你,那確實起作用。 – DevDorian

相關問題