鱼C论坛

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

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

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

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

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

x
跟着小甲鱼创建的第一个类就让我迷惑了
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())
最佳答案
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 | 显示全部楼层
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()
想知道小甲鱼最近在做啥?请访问 -> 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, 2025-1-17 01:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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