首页 > 解决方案 > Python 'int object not callable' - 使用类

问题描述

最近进入 python 并且我发现课程有点挑战性。

下面的程序只是试图模拟一个简单的掷骰子来练习课程。特别不知道为什么我在这里似乎无法引用 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()  

标签: python

解决方案


这已经在评论中得到解决,但是由于您刚刚进入 python,我认为一个正确的答案实际上解释了您为什么要进行此更改是合适的。

sides不是函数。它是函数调用返回的数字getSides()。python中括号的目的是为函数调用指定参数。如果函数后面只有一个 (),里面什么都没有,这意味着该函数没有参数,但它仍然是一个函数。它做某事。避免这个错误的一种方法就是了解你的函数是什么,但是,因为这在一开始可能有点棘手,所以在你对函数更加熟悉之前使用的一个技巧是想象在这些函数中加入一个论点括号,看看它是否有意义。例如。我们有这个功能getSides()。如果你把一些东西放在 likegetSides(self)中,这是有道理的,因为每个骰子都有你想要得到的多个面。这是一个做某事的函数。现在,怎么样side(self)? 那么side变量实际上并没有做任何事情。如果side==6,那根本不会改变self。它只是一个数字,由另一个函数返回,所以没有括号。


推荐阅读