2017-07-15 158 views
2

(使用Python 2.7)的Python - 類型錯誤: '詮釋' 對象不是可調用

你好,

我已經版本二類PairOfDice的。

1.)這一個不工作,並引發錯誤。

TypeError: 'int' object is not callable

import random 

class PairOfDice: 
    """ Represent the Pair of Dices and have method which tells the total of those roles. 
    """ 
    def roll(self): 
     self.total = random.randint(1, 6) + random.randint(1, 6) 

    def total(self): 
     return self.total 

    def name(self, name): 
     self.name = name 

    def getName(self): 
     return self.name 

player1 = PairOfDice() 
player1.roll() 
print player1.total() 

2)該一個正在工作。

import random 

class PairOfDice: 
    """ Represent the Pair of Dices and have method which tells the total of those roles. 
    """ 
    def roll(self): 
     self.roll1 = random.randint(1, 6) 
     self.roll2 = random.randint(1, 6) 

    def total(self): 
     return self.roll1 + self.roll2 

    def name(self, name): 
     self.name = name 

    def getName(self): 
     return self.name 

player1 = PairOfDice() 
player1.roll() 
print player1.total() 

可以請某人解釋第一個問題?

由於

+1

爲'self.total'指定一個值將覆蓋'self.total'方法;你在第一個例子的最後一行中打這個號碼。一個類實例只有一個名稱空間,包括值和方法。 – jasonharper

回答

3

在第一類中total是一個函數,以及所述類的屬性。這是不正確的:) Python認爲你在最後一行提到的總數是整數變量total而不是函數。

它被認爲是一個很好的做法,命名功能total作爲get_total代替

2

這是因爲你有一個叫做總資產,以及一個名爲total功能。當您運行roll時,您將覆蓋班級的定義total

換句話說,在運行roll之前,player1.total是一個函數。但是,一旦您運行滾動,您將player1.total設置爲一個數字。從那時起,當你參考player1.total時,你指的是這個數字。

您可能想要將total函數重命名爲諸如getTotal之類的東西,或類似的東西。

相關問題