【发布时间】:2016-07-08 12:28:25
【问题描述】:
我正在尝试从 python 中的一个类中添加多个整数,但是它出现了错误:
Traceback(最近一次调用最后一次): 文件“G:/documents/Computing/Python/Fighter Game.py”,第 53 行,在 如果 player.health() + player.strength() + player.defence() + player.speed() == 350: TypeError: 'int' 对象不可调用
类的代码是:
class Fighter:
name = "Not Set"
alignment = "Not Set" #good / bad
health = 0
strength = 0
defence = 0
speed = 0
def name(self):
return self.name
def alignment(self):
return self.alignment
def health(self):
return self.health
def strength(self):
return self.strength
def defence(self):
return self.defence
def speed(self):
return self.speed
def set_name(self, new_name):
self.name = new_name
def set_alignment(self, new_alignment):
self.alignment = new_alignment
def set_health(self, new_health):
self.health = new_health
def set_strength(self, new_strength):
self.strength = new_strength
def set_defence(self, new_defence):
self.defence = new_defence
def set_speed(self, new_speed):
self.speed = new_speed
而引发错误的代码是:
player = Fighter()
while True:
player.set_name(input("Enter your name: "))
player.set_alignment("good")
player.set_health(int(input("Enter your health: ")))
player.set_strength(int(input("Enter your strength: ")))
player.set_defence(int(input("Enter your defence: ")))
player.set_speed(int(input("Enter your speed: ")))
if player.health() + player.strength() + player.defence() + player.speed() == 350:
print("Player setup complete.")
break
else:
print("Numerical player values must all add up to 350.")
如果能提供任何帮助,我们将不胜感激! :-)
【问题讨论】:
-
.health不能既是属性又是方法。当您set_health时,您正在用数字覆盖该方法。 -
您将防御用作属性和函数(def defence(self)。重命名函数或属性,它应该可以工作。
标签: python class python-3.x int