2014-05-24 41 views
-1

我最近開始計算機科學的年終計劃(自我提議,也是我第一年考慮它,因此只有大約4個月的Python經驗),並決定我想在它裏面做一個簡單的口袋妖怪模擬器。創建一個包含無用戶輸入數據的類?

我最近遇到了一個障礙:讓我們說用戶選擇皮卡丘作爲他們的首發。我不希望用戶輸入他們的健康,攻擊,速度和移動。他們是創建一個皮卡丘課程的一種方式,它已經有了這些數據嗎?

我想是這樣的:

class Pikachu(object): 
    def __init__(self): 
     self.data = [] 
    def health(self): 
     self.health = 22 
     print self.health 
    def attack(self): 
     self.attack = 7 
    def speed(self): 
     self.speed = 6 

Pikachu.health() 

當我這樣做(在試圖檢查,看看是否健康存儲,並將於需求返回),它給人的錯誤:

TypeError: unbound method health() must be called with Pikachu instance as first argument (got nothing instead)

我很困惑這個錯誤是什麼意思。通常這會起作用,並且你不需要括號中的參數,但在這種情況下它不會。

是否有一些不同的方式來創建一個類並在其中存儲數據?有沒有一些方法只創建一個對象或做這樣的事情:

def Pikachu: 
    health = 22 
    attack = 7 
    speed = 6 
+0

'皮卡丘()健康()'... –

+0

嗯,這是我的一個愚蠢的錯誤!感謝您的快速回答! – jdimaria3

回答

0

那是因爲你的變量名是與您的方法名。而且你爲什麼不構造函數初始化的一切:

class Pikachu(object): 
    def __init__(self): 
     self.data = [] 
     self.attack = 7 
     self.health = 22 
     self.speed = 6 
    def get_health(self): 
     return self.health 

    def get_attack(self): 
     return self.attack 

    def get_speed(self): 
     return self.speed 

if __name__ == '__main__': 
    p = Pikachu() 
    print p.get_health() 
相關問題