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