巴巴鲁 发表于 2020-12-28 19:04:18

类和对象—为什么会多打印一个None出来

跟着小甲鱼创建的第一个类就让我迷惑了
class Turtle: #Python类对象名约定大写字母开头

    #方法
    def climb(self):
      print("爬呀爬")

    def eat(self):
      print("干饭人,干饭魂")

    def run(self):
      print("没想到吧,爷会跑")

    def bite(self):
      print("咬你哦")

    def sleep(self):
      print("困了,睡了,晚安,Zzz")

tt = Turtle()
print(tt.sleep())

hrp 发表于 2020-12-28 19:16:53

最后的print(tt.sleep())改成tt.sleep(),因为你所以方法都没有返回值,默认返回None,你打印方法的返回值,就是打印None。

Daniel_Zhang 发表于 2020-12-28 19:33:26

要么就改成 tt.sleep() 直接调用函数

要么就吧 sleep 里面的字符赋值给一个 变量,在 sleep 函数里面 return 那个变量

qin_yin 发表于 2020-12-28 20:53:38

本帖最后由 qin_yin 于 2020-12-28 21:00 编辑

你可以把方法看作一个函数,不过这个函数必须通过对象或者类对象+ '.'+函数名(方法名)来调用, 并且他是隶属于类对象和对象
现在我们把这个方法看作一个普通的函数,python的函数众所周知有返回值,返回返回值,没有返回值
返回None,而你现在的这个方法没有返回任何对象,所以返回None

过程解析:

print(tt.sleep())1   调用函数                  tt.sleep()
2   执行函数内的代码   print("困了,睡了,晚安,Zzz")
3   返回                        由于你没有设置返回值,python函数(方法)自动返回None
4   输出                        print(tt.sleep()) 输出的内容就是函数返回值(方法)

z5560636 发表于 2020-12-29 08:50:25

class Turtle: #Python类对象名约定大写字母开头

    #方法
    def climb(self):
      print("爬呀爬")

    def eat(self):
      print("干饭人,干饭魂")

    def run(self):
      print("没想到吧,爷会跑")

    def bite(self):
      print("咬你哦")

    def sleep(self):
      print("困了,睡了,晚安,Zzz")

tt = Turtle()
tt.sleep()

巴巴鲁 发表于 2020-12-29 18:34:14

qin_yin 发表于 2020-12-28 20:53
你可以把方法看作一个函数,不过这个函数必须通过对象或者类对象+ '.'+函数名(方法名)来调用, 并且他是 ...

原来如此
页: [1]
查看完整版本: 类和对象—为什么会多打印一个None出来