为何以下Python代码的print语句会输出None?
为什么代码运行后第二行会输出'None'?
你的代码:
class mobile: def __init__(self, name, brand): self.name = name self.brand = brand def get_name(self): return self.name class cpu(mobile): def get_name(self): print("This mobile has HighTech %s CPU " % self.name) brand = cpu("Intel","Sony") print(brand.get_name())
运行结果:
This mobile has HighTech Intel CPU None
原因解析:
cpu类重写了父类mobile的get_name方法,但这个重写后的方法只有print语句,没有显式的return返回值。- 在Python中,所有没有写
return语句的函数/方法,默认都会返回None。 - 当你执行
print(brand.get_name())时,先调用get_name()方法,方法内部通过print输出第一行内容;方法执行完后返回默认的None,外层的print又把这个返回值打印出来,就出现了第二行的None。
两种解决方式:
- 去掉外层的
print,直接调用方法:
brand = cpu("Intel","Sony") brand.get_name()
运行结果仅输出一行:This mobile has HighTech Intel CPU
- 给
cpu类的get_name方法添加return语句:
class cpu(mobile): def get_name(self): msg = "This mobile has HighTech %s CPU " % self.name print(msg) return msg brand = cpu("Intel","Sony") print(brand.get_name())
运行结果会输出两行相同的内容(方法内打印+外层打印返回值),不会出现None:
This mobile has HighTech Intel CPU This mobile has HighTech Intel CPU
内容的提问来源于stack exchange,提问作者peacekeeper
相关产品推荐
相关产品推荐

