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

Python将Fleet类对象写入txt文件仅输出VIN故障求助

问题原因
  • 字典遍历逻辑错误:fleet是键为VIN字符串、值为Fleet/Truck实例的字典,直接写for obj in fleet遍历得到的是VIN字符串而非车辆实例,此时调用obj.__str__()实际是调用字符串类的内置方法,返回值就是VIN本身,因此最终写入文件的只有VIN内容。
  • __str__方法存在类型错误:方法内直接将int类型的属性(年份、里程、租赁相关数值等)与字符串拼接,会触发类型错误,就算正确调用到该方法也无法得到完整的8字段拼接结果。
  • 写入未加换行符:每条记录写入时没有追加换行符\n,所有内容会默认拼接在同一行。
修复方案
  1. 先修复Fleet类的__str__方法,将int类型属性统一转为字符串:
def __str__(self):
    # 用f-string自动处理类型转换,也可以用str()逐个转换属性
    return f"{self.__vin},{self.__type},{self.__year},{self.__odometer},{self.color},{self.__r_miles},{self.__r_days},{self.__rentals}"
  1. 修复文件写入逻辑,遍历字典的值获取车辆实例,每条记录后加换行符:
with open("updated_fleet.txt", "w") as myfile:
    # 遍历字典的value拿到车辆实例
    for car in fleet.values():
        outline = str(car)
        # 加换行符实现每条记录单独占一行
        myfile.write(outline + "\n")
# with上下文管理器会自动关闭文件,不需要手动调用myfile.close()
  1. 额外修复隐含bug:生成待售车辆列表时,原代码误将VIN字符串当做实例调用方法,修改如下:
sell_list = []
for vin in fleet:
    if fleet[vin].sell_car(yr) == True:
        sell_list.append(vin)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:57:03