You need to enable JavaScript to run this app. Python如何通过自定义read()函数输出Playlists类的所有实例内容
优惠活动
大模型
产品
解决方案
定价
更多

Python如何通过自定义read()函数输出Playlists类的所有实例内容

Python代码功能修正方案

现存核心问题梳理

  • add() 函数内创建的Playlist实例列表为局部变量,没有通过返回值对外暴露,其他函数无法访问
  • Playlists 实例化时的参数顺序和类定义的__init__方法参数不匹配,导致属性赋值错位
  • read() 中直接调用类本身的__str__()方法,没有绑定具体类实例,会触发参数缺失报错
  • read() 中的打印语句直接引用未定义的裸变量,没有从实例上读取对应属性值,会触发NameError
  • 代码中存在命名冲突(用内置类型名list做变量名)、拼写错误(把Name写为Mame)、字符串断行导致的输出截断问题

分步修正代码

1. 调整library/items.py的类定义

修正原代码中__str__方法的断行问题,保证输出字符串完整:

class Playlists:
    def __init__(self, playlist_name, playlist_id, track_id):
        self.playlist_name = playlist_name
        self.playlist_id = playlist_id
        self.track_id = track_id

    def __str__(self):
        return f'Playlist Name: {self.playlist_name}, Playlist ID: {self.playlist_id}, Track ID: {self.track_id}'

2. 重写test.py中的add()函数

修正参数传值顺序,将构造完成的实例列表通过返回值对外暴露,同时避开和内置类型重名的变量:

from library.items import Playlists

def add():
    playlist_list = []
    # 按__init__定义的参数顺序(playlist_name, playlist_id, track_id)传值,避免属性错位
    playlist_list.append(Playlists('Auto', '24SHqUZy0WCV5xr0rf8lKq', '3AzjcOeAmA57TIOr9zF1ZW'))
    playlist_list.append(Playlists('Auto', '24SHqUZy0WCV5xr0rf8lKq', '45bE4HXI0AwGZXfZtMp8JR'))
    playlist_list.append(Playlists('Auto2', '7jA9b083jD5GTejPovTVX9', '5gJ7XTF7e0shYzCOAfwsIz'))
    playlist_list.append(Playlists('Auto2', '7jA9b083jD5GTejPovTVX9', '1K3MWIZ1wuy6HjDLo63ZgT'))
    playlist_list.append(Playlists('Auto2', '7jA9b083jD5GTejPovTVX9', '5uKgxudNcssSnULVAkpkwI'))
    playlist_list.append(Playlists('Auto3', '6Z7CHHGD33XtVjLJ3WFIiW', '0sjSgTluUJIdqfyRe4EQ4U'))
    playlist_list.append(Playlists('Auto3', '6Z7CHHGD33XtVjLJ3WFIiW', '2TfcMUAZ4vH4fTA9eF53v2'))
    playlist_list.append(Playlists('Auto3', '6Z7CHHGD33XtVjLJ3WFIiW', '0YOUE1TlkgSbkNvWkZkEVp'))
    playlist_list.append(Playlists('Auto3', '6Z7CHHGD33XtVjLJ3WFIiW', '3AKm9sJmK0v3wUQYSLuze7'))
    return playlist_list

3. 重写test.py中的read()函数

接收传入的实例列表,循环遍历所有实例输出内容,修正拼写错误:

def read(playlist_list):
    for idx, playlist in enumerate(playlist_list, 1):
        # 直接打印实例对象,Python会自动触发类定义的__str__方法输出格式化内容
        print(f"第{idx}条记录:{playlist}")

4. 调整test.py中的main()函数逻辑

将add()返回的实例列表传递给read()完成输出,打通函数间的数据传递链路:

def main():
    all_playlists = add()
    read(all_playlists)

if __name__ == '__main__':
    main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.11 13:15:02