鱼C论坛

 找回密码
 立即注册
查看: 1577|回复: 5

[已解决]类和对象—为什么会多打印一个None出来

[复制链接]
发表于 2020-12-28 19:04:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

  2.     #方法
  3.     def climb(self):
  4.         print("爬呀爬")

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

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

  9.     def bite(self):
  10.         print("咬你哦")

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

  13. tt = Turtle()
  14. print(tt.sleep())
复制代码
最佳答案
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()) 输出的内容就是函数返回值(方法)
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-28 19:16:53 From FishC Mobile | 显示全部楼层
最后的print(tt.sleep())改成tt.sleep(),因为你所以方法都没有返回值,默认返回None,你打印方法的返回值,就是打印None。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-28 19:33:26 | 显示全部楼层
要么就改成 tt.sleep() 直接调用函数

要么就吧 sleep 里面的字符赋值给一个 变量,在 sleep 函数里面 return 那个变量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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()) 输出的内容就是函数返回值(方法)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-29 08:50:25 | 显示全部楼层
  1. class Turtle: #Python类对象名约定大写字母开头

  2.     #方法
  3.     def climb(self):
  4.         print("爬呀爬")

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

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

  9.     def bite(self):
  10.         print("咬你哦")

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

  13. tt = Turtle()
  14. tt.sleep()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

原来如此
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 13:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表