我最近开始了今年年底的计算机科学项目(自我提议,也是我第一年学习它只有大约4个月的python经验)并决定我想在其中做一个简单的Pokemon模拟器。 / p>
我最近陷入了障碍:让我们说用户选择皮卡丘作为他们的首发。我不希望用户输入他们的健康,攻击,速度和动作。他们是否可以创建一个已经拥有该数据的皮卡丘类?
我试过这样的事情:
class Pikachu(object):
def __init__(self):
self.data = []
def health(self):
self.health = 22
print self.health
def attack(self):
self.attack = 7
def speed(self):
self.speed = 6
Pikachu.health()
当我这样做时(试图检查并查看健康状况是否已存储并将按需返回),它会显示错误:
TypeError:必须使用皮卡丘实例作为第一个参数调用未绑定方法health()(没有取而代之)
我对错误的含义感到困惑。通常这会起作用,你不需要括号中的参数,但在这种情况下它不会。
是否有一些不同的方法来创建一个类并在其中存储数据?有没有办法只是创建一个对象或做这样的事情:
def Pikachu:
health = 22
attack = 7
speed = 6
答案 0 :(得分:0)
这是因为您的变量名称与您的方法名称相同。以及为什么不在构造函数中初始化所有内容:
class Pikachu(object):
def __init__(self):
self.data = []
self.attack = 7
self.health = 22
self.speed = 6
def get_health(self):
return self.health
def get_attack(self):
return self.attack
def get_speed(self):
return self.speed
if __name__ == '__main__':
p = Pikachu()
print p.get_health()