class Personaje:
def__init__(self,name):
self.name=pepe
self.type=warrior
self.health=100
def eat(self,food):
if(food=="manzana"):
self.health-=10
elif(food=="leche"):
self.health+=5
else(food=="mondongo"):
self.health+= int(0.0001)
我在(self.name)上获得了无效的语法:<<
答案 0 :(得分:5)
看一下错误:
File "<ipython-input-4-3873e72b95ad>", line 3
def__init__(self,name):
^
SyntaxError: invalid syntax
def
和__init__
之间应该有一个空格,因此__init__
函数的定义应为:
def __init__(self, name):
# ....
else语句不会使用if
或elif
之类的任何表达式,因此导致此语法错误:
File "<ipython-input-5-661f08a520ce>", line 12
else(food=="mondongo"):
^
SyntaxError: invalid syntax
else
表示其他所有内容,因此如果您希望它仅适用于&#34; mondongo&#34;你应该在那里使用另一个elif
。
函数eat
在__init__
函数内定义,导致:
<ipython-input-22-9789ced9c556> in <module>()
----> 1 p.eat('leche')
AttributeError: Personaje instance has no attribute 'eat'
如果你取消函数(向左移动4个空格),那么将在类中定义eat而不是init函数。所以基本结构应该像这样缩进:
class Personaje:
def __init__(...):
pass
def eat(...):
pass
未将Personaje名称设置为__init__
函数中指定的名称。如果您想将默认名称设置为pepe
并输入warrior
,我建议您将init函数更改为如下所示:
def __init__(self, name="pepe", type="warrior"):
self.name = name
self.type = type
self.health = 100
你现在的最后Personaje
课应该是这样的:
class Personaje:
def __init__(self, name="pepe",type="warrior"):
self.name = name
self.type = type
self.health = 100
def eat(self, food):
if(food=="manzana"):
self.health -= 10
elif(food=="leche"):
self.health += 5
else:
self.health += int(0.0001)