Python3中Rug子类调用父类__str__方法输出内存地址异常
问题原因
- 你的父类
Rectangle没有自定义实现__str__方法,当调用super().__str__()时,实际会调用Python所有类的顶层父类object的默认__str__方法,该方法默认返回的就是你看到的对象内存地址字符串。
修复方案
方案1:给父类补充__str__方法(推荐,符合继承复用逻辑)
在Rectangle类中添加如下方法即可:
def __str__(self): return f"Length: {self.getLength()}, Width: {self.getWidth()}"
修改后子类的__str__调用super().__str__()就会返回父类定义的长宽信息,最终打印效果示例如下(假设输入长2、宽3):
Length: 2.0, Width: 3.0, Area: 6.0, Price: 150
方案2:直接修改子类的__str__方法(无需改动父类)
如果没有权限或不想修改父类代码,可以直接在子类的__str__里手动拼接父类的属性信息,不用调用super().__str__():
def __str__(self): return f"Length: {self.getLength()}, Width: {self.getWidth()}, Area: {self.getArea()}, Price: {self.getPrice()}"
内容的提问来源于stack exchange,提问作者Ejones222
相关产品推荐
相关产品推荐

