Python子类对象如何正确调用并展示父类方法的信息?
问题原因
你遇到的问题出在Animal类的eat()方法上——这个方法内部直接用print()输出内容,执行完后默认返回None。当你把Canela.eat()放进外部的print语句里时,会先触发方法内部的print输出"eats well",然后把方法返回的None拼接到你的输出字符串里,所以最后会看到额外的None。
解决方案
要把父类方法的信息整合到输出语句里,核心是让eat()方法返回字符串内容,而不是直接在方法内部打印。修改后的代码如下:
class Animal: def eat(self): # 改为返回字符串,而非直接print return "eats well" def sleep(self): return "sleeps well" class Dog(Animal): def __init__(self, breed, color): self.breed = breed self.color = color Canela = Dog("chihuahua", "brown") # 原正常输出逻辑不变 print("This dog is a", Canela.breed, "and its color is", Canela.color) # 现在可以把eat()返回的字符串无缝整合到输出里 print("This dog is a", Canela.breed, "and its color is", Canela.color, "and it", Canela.eat())
可选扩展
如果需要保留“单独调用Canela.eat()就能直接看到输出”的功能,可以在方法里同时实现打印和返回:
class Animal: def eat(self): msg = "eats well" print(msg) return msg
这样不管是单独调用方法,还是把它嵌入到外部的print语句中,都能得到预期的结果。
内容的提问来源于stack exchange,提问作者Cloud23
相关产品推荐
相关产品推荐

