Python中PetData类print_all()方法实现求助:解决输出异常
问题解决:PetData类print_all()方法正确实现
先明确基类结构(符合输入场景的示例)
假设AnimalData基类定义如下:
class AnimalData: def __init__(self, name, age): self.name = name self.age = age def print_all(self): print(f"Name: {self.name}") print(f"Age: {self.age}")
正确的PetData类实现
class PetData(AnimalData): def __init__(self, name, age, pet_id): super().__init__(name, age) self.pet_id = pet_id # 注意属性名要和后续打印时一致,别写错 def print_all(self): # 直接调用基类方法,不要用print包裹(否则会打印方法的返回值None) super().print_all() # 单独打印ID行,print默认自带换行,无需额外处理 print(f"ID: {self.pet_id}")
测试验证
执行以下代码:
pet = PetData('Fluffy', 5, 4444) pet.print_all()
输出完全符合预期:
Name: Fluffy Age: 5 ID: 4444
你之前遇到的问题原因及修复点
- ID行无换行:大概率是打印ID时手动设置了
end='',或者用了无换行的输出方式(如sys.stdout.write),直接用默认的print()即可解决。 - ID前出现NONE:因为你写了
print(super().print_all())——基类的print_all()没有返回值(默认返回None),print会把这个返回值也打出来,改成直接调用super().print_all()就行。 - ID内容不显示:检查子类初始化时的属性名和打印时的是否一致,比如别把
self.pet_id写成self.id或者其他错误名称。 - 硬编码仍无换行:排查硬编码的
print语句,去掉多余的end参数,或者明确设置end='\n'。
内容的提问来源于stack exchange,提问作者tranese
相关产品推荐
相关产品推荐

