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
相关产品推荐
相关产品推荐

