python - 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,我认为一个正确的答案实际上解释了您为什么要进行此更改是合适的。
sides
不是函数。它是函数调用返回的数字getSides()
。python中括号的目的是为函数调用指定参数。如果函数后面只有一个 (),里面什么都没有,这意味着该函数没有参数,但它仍然是一个函数。它做某事。避免这个错误的一种方法就是了解你的函数是什么,但是,因为这在一开始可能有点棘手,所以在你对函数更加熟悉之前使用的一个技巧是想象在这些函数中加入一个论点括号,看看它是否有意义。例如。我们有这个功能getSides()
。如果你把一些东西放在 likegetSides(self)
中,这是有道理的,因为每个骰子都有你想要得到的多个面。这是一个做某事的函数。现在,怎么样side(self)
? 那么side
变量实际上并没有做任何事情。如果side==6
,那根本不会改变self
。它只是一个数字,由另一个函数返回,所以没有括号。
推荐阅读
- r - summary 命令返回不同的输出
- mysql - 在 Nodejs 应用程序中在 Google Cloud SQL 上设置 MySQL 数据库
- django - AttributeError:“NoneType”对象没有属性“check_password”
- python - 如何更改 Anaconda 以便 Jupyter 在另一个驱动器中运行
- r - 如何在 R 中的马赛克图中添加相对频率?
- vue.js - v-tooltip 中的 Html img 标签不适用于 vue.js
- python - 有没有办法将root密码传递给python3中kali linux上的函数
- c++ - 如何在运行时验证架构匹配 -march=?
- java - viewpager2 setoffscreenpagelimit(3) 不工作
- go - Kubernetes (OpenShift) kubectl (oc - OpenShift CLI) `patch` 返回错误: cannot unmarshal array into Go value of type map[string]interface {}