You need to enable JavaScript to run this app. Python为CarRecord类实现__str__特殊方法报返回非字符串错误
优惠活动
大模型
产品
解决方案
定价
更多

Python为CarRecord类实现__str__特殊方法报返回非字符串错误

代码报错排查:TypeError: __str__ returned non-string 问题定位

报错核心原因

Python 要求类的特殊方法__str__()必须返回字符串类型,你的代码返回了非字符串对象,直接触发类型错误。

具体错误点

  • 返回值结构错误:当前__str__方法里的return语句用逗号分隔多个值,Python会自动把这组值打包成元组返回,而非拼接后的字符串,完全不符合__str__的返回值要求。
  • 类方法内错误引用全局变量:在__str__方法中直接访问了全局定义的my_car对象,没有用实例方法默认的self参数指代当前实例,逻辑上也不符合类的封装设计——这个方法本该服务于类的所有实例,而非硬绑定某一个全局变量。

修正方案

  1. 修改__str__的返回逻辑:通过字符串格式化把属性值拼接为完整字符串,不要用逗号分隔多值
  2. 方法内统一通过self访问实例属性,移除对全局my_car变量的引用

修正后可运行代码

class CarRecord:
    def __init__(self):
        self.year_made = 0
        self.car_vin = ''

    def __str__(self):
        return f"Year: {self.year_made}, VIN: {self.car_vin}"

my_car = CarRecord()
my_car.year_made = int(input())
my_car.car_vin = input()

print(my_car)

按题目要求输入2009、ABC321时,可正常输出指定格式内容,无类型报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 18:54:03