Python'不可调用的int对象'-使用类

时间:2018-12-13 17:14:22

标签: python

最近进入python和im查找类有点挑战。

我下面的程序只是尝试模拟一个简单的骰子掷骰来练习课程。 特别是不确定我为什么在这里出现无法引用self.sides的错误

谢谢!

import random  
class Dice(object):  
    def __init__(self,sides):  
        self.sides = sides    
    def getSides(self):  
        return self.sides  
    def __str__(self):  
        return  
    def RollDice(self):  
        # create list with each potential number  
        outcomes=[]  
        temp = self.sides()      **<----------- 'int' object is not callable**  
        for i in range(0,temp+1):  
            outcomes.append(i)  
        # select random number  
            roll = random.choice(outcomes)  
            print(roll)  

normal=Dice(6)  
normal.RollDice()  

2 个答案:

答案 0 :(得分:1)

此问题已在注释中得到解决,但是由于您刚刚接触python,我认为一个正确的答案实际上可以解释您为何进行此更改,这是适当的。

sides不是函数。它是函数调用getSides()返回的数字。 python中括号的目的是为函数调用指定参数。如果一个函数后面只有一个(),而里面没有任何内容,则表示该函数没有参数,但它仍然是一个函数。它做某事。避免此错误的一种方法是仅了解您的函数是什么,但由于一开始可能会有些棘手,因此在对函数更熟悉之前可以使用的一个窍门是想象在函数中添加参数括起来,看看是否有意义。例如。我们具有功能getSides()。如果您将getSides(self)之类的东西放进去,那是有道理的,因为每个骰子都有多个面要获得。这是一项功能。现在,side(self)呢?好吧,side变量实际上什么也没做。如果为side==6,那根本不会改变self。这只是一个数字,是由另一个函数返回的,因此没有括号。

答案 1 :(得分:0)

这里:

temp = self.sides()

()试图调用int对象。删除它,代码可以正常运行:

temp = self.sides