You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用super().__str__()返回对象内存地址,输出不符合预期如何解决

问题原因
  • 你的Trip类没有显式指定父类,默认继承Python最顶层的object类,调用super().__str__()实际上是调用object类的__str__方法,该方法默认输出格式就是<类名 object at 内存地址>,和你想要的Driver类输出完全无关。
  • 你混淆了调用对象:你需要的是Trip实例存储的_driver属性(也就是你传入的Driver实例)的字符串表示,不是Trip父类的字符串输出。
解决方法

修改Trip类的__str__方法,把super().__str__()替换为str(self._driver)(或者self.driver.__str__(),因为你已经定义了driver的property装饰器,两种写法都可以)。
修改后的__str__代码示例:

def __str__(self):
    return f'{self._tripDate}, From: {self._startPoint} To: {self._destination}\n Distance: {self._distance}km\n' + str(self._driver)

修改后运行输出就会符合预期,除了Trip本身的行程信息外,还会拼接Driver实例的格式化字符串Driver Id: 1 Name: John Contact: 82121355。

内容的提问来源于stack exchange,提问作者zeerock

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:36:04