Python 打印实例变量后无
为什么在Python 打印实例变量后无,python,Python,为什么在print语句的每个结果之后都会得到None 在使用print语句或类实例化时,我从未遇到过这种情况 None来自哪里 class敌人: 寿命=3 def攻击(自我): 打印(“哎哟!”) 自我生命-=1 def检查寿命(自我): 如果(self.life类敌人: 寿命=3 def攻击(自我): 打印(“哎哟!”) 自我生命-=1 def检查寿命(自我): 如果(self.life类敌人: 寿命=3 def攻击(自我): 打印(“哎哟!”) 自我生命-=1 def检查寿命(自我):
print
语句的每个结果之后都会得到None
在使用print
语句或类实例化时,我从未遇到过这种情况
None
来自哪里
class敌人:
寿命=3
def攻击(自我):
打印(“哎哟!”)
自我生命-=1
def检查寿命(自我):
如果(self.life类敌人:
寿命=3
def攻击(自我):
打印(“哎哟!”)
自我生命-=1
def检查寿命(自我):
如果(self.life类敌人:
寿命=3
def攻击(自我):
打印(“哎哟!”)
自我生命-=1
def检查寿命(自我):
如果(self.life您正在打印未返回值的函数的返回值
print( e1.checkLife() )
# 3 lives left... This is printed from within the function
# None checkLife() returns None, and you print it here
您正在打印未返回值的函数的返回值
print( e1.checkLife() )
# 3 lives left... This is printed from within the function
# None checkLife() returns None, and you print it here
所有Python函数都返回值None
,除非有一个显式的
语句的值不是None
,而是返回值None
因此,第二次打印实际上是返回函数的结果,这些函数都是None
。函数内部的第一次打印就足够了。
或者更新函数,使其具有显式的返回值
,然后按如下方式打印返回值:
class Enemy:
life = 3
def attack(self):
print("ouch!")
self.life -= 1
return self.life
def checkLife(self):
if (self.life <= 0):
return 'dead!'
else:
return str(self.life) + " lives left..."
e1 = Enemy()
print( e1.checkLife() )
# 3 lives left...
print( e1.attack() )
# ouch!
# 2
print( e1.checkLife() )
# 2 lives left...
class敌人:
寿命=3
def攻击(自我):
打印(“哎哟!”)
自我生命-=1
回归自我生活
def检查寿命(自我):
如果(自我生活)
所有Python函数都返回值None
,除非有一个显式的
语句的值不是None
,而是返回值None
因此,第二次打印实际上是返回函数的结果,这些函数都是None
。函数内部的第一次打印就足够了。
或者更新函数,使其具有显式的返回值
,然后按如下方式打印返回值:
class Enemy:
life = 3
def attack(self):
print("ouch!")
self.life -= 1
return self.life
def checkLife(self):
if (self.life <= 0):
return 'dead!'
else:
return str(self.life) + " lives left..."
e1 = Enemy()
print( e1.checkLife() )
# 3 lives left...
print( e1.attack() )
# ouch!
# 2
print( e1.checkLife() )
# 2 lives left...
class敌人:
寿命=3
def攻击(自我):
打印(“哎哟!”)
自我生命-=1
回归自我生活
def检查寿命(自我):
if(self.life所有Python函数都返回一些东西-None
如果您只使用return
(或者根本不返回)。如果不想看到,请不要打印它。在交互式会话中,解释器会自动打印每个表达式的值,除非它是None
所有Python函数都返回某个值-None
(如果只使用return
(或根本不返回)。如果不想看到,请不要打印它。在交互式会话中,解释器会自动打印每个表达式的值,除非它是None
定义类时,类的每个方法(类的函数)应该具有正确的标识。在代码攻击中,checkLife被解释为独立函数。这就是您尝试调用checkLife时得到的原因:
AttributeError:敌人实例没有“checkLife”属性
你还必须为你的类定义一个构造函数,这是一种特殊的函数,负责正确创建你的对象。在你的情况下,你敌人的生命应该初始化为3。你应该在构造函数中定义这个属性,这样你的对象就可以拥有它。这就是self.life工作的原因
self.life是指对象的(self)属性,名称为life
class敌人:
定义初始化(自):
自我生活=3
def攻击(自我):
打印(“哎哟!”)
自我生命-=1
def检查寿命(自我):
如果(self.life定义类时,类的每个方法(类的函数)都应该有正确的标识。在代码攻击中,checkLife被解释为独立函数。这就是您尝试调用checkLife时得到的原因:
AttributeError:敌人实例没有“checkLife”属性
你还必须为你的类定义一个构造函数,这是一种特殊的函数,负责正确创建你的对象。在你的情况下,你敌人的生命应该初始化为3。你应该在构造函数中定义这个属性,这样你的对象就可以拥有它。这就是self.life工作的原因
self.life是指对象的(self)属性,名称为life
class敌人:
定义初始化(自):
自我生活=3
def攻击(自我):
打印(“哎哟!”)
自我生命-=1
def检查寿命(自我):
if(self.life)可能重复抱歉,我的不好。这是在我复制代码并将其粘贴到此帖子时发生的。我将立即编辑它…抱歉,我的不好。这是在我复制代码并将其粘贴到此帖子时发生的。我将立即编辑它。。。
class Enemy:
def __init__(self):
self.life = 3
def attack(self):
print("ouch!")
self.life -= 1
def checkLife(self):
if (self.life <= 0):
print('dead!')
else:
print( str(self.life) + " lives left..." )
e1 = Enemy()
print( e1.checkLife() )
# 3 lives left...
# None
print( e1.attack() )
# ouch!
# None
print( e1.checkLife() )
# 2 lives left...
# None