Python - TypeError: 'int' object is not callable
Python - TypeError: 'int' object is not callable
使用Python 2.7版本
你好,
我有两个版本的PairOfDice类。
1.) 这个版本不工作,并抛出一个错误。
TypeError: 'int'对象不可调用
import random class PairOfDice: """表示一对骰子,并具有返回总点数的方法。 """ 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: """表示一对骰子,并具有返回总点数的方法。 """ 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()
请问有人能解释一下第一个版本有什么问题吗?
谢谢
在这个问题中,出现了一个类型错误:'int' object is not callable。这个错误的原因是在第一个类中,total既被定义为一个函数,又被定义为一个类的属性。这样的定义是不正确的。Python在最后一行代码中认为你所引用的total是一个整数变量,而不是一个函数。
要解决这个问题,一个好的做法是将函数名从total改为get_total。这样就不会与类的属性冲突,避免了类型错误的出现。
下面是修改后的代码示例:
class MyClass: def __init__(self, total): self.total = total def get_total(self): return self.total my_object = MyClass(10) print(my_object.get_total()) # 输出 10
通过将函数名改为get_total,我们避免了与类的属性冲突,成功解决了类型错误的问题。