海山闲谈

千里易见,跬步难积

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

问题:在学习类和对象的过程中,定义一个类方法是打印,在实例化后,打印实例的方法时,会多打印一行“None”
问题代码:

class People:
    def __init__(self, name, company):
        self.name = name
        self.company = company

    def introduce(self):
        print(f"{self.name}的公司是{self.company}")


mayun = People("马云", "阿里巴巴")
wangjianlin = People("王健林", "万达集团")

print(mayun.introduce())
print(wangjianlin.introduce())

输出:

马云的公司是阿里巴巴
None
王健林的公司是万达集团
None

问题原因:每个函数方法都有一个return值,如果不定义,则默认返回为None。在问题场景下,打印被调用了2次,第一次是内层的调用:introduce()自身调用内部的print,打印出了汉字内容;第二次是外层的调用:打印introduce()的返回值,由于方法本身未定义返回值,所以此时返回默认值None

修改方法:在introduce定义时,使用return替换掉print

def introduce(self):
        return(f"{self.name}的公司是{self.company}")

输出:

马云的公司是阿里巴巴
王健林的公司是万达集团

posted on 2023-02-21 00:04  不山  阅读(66)  评论(0编辑  收藏  举报