将列表变量传入Python类函数时仅获取CSV最后一条数据的问题
问题分析与解决
核心问题
- 方法缩进错误:
GetRoster函数没缩进在Team类内部,不属于类的实例方法,运行时会报错找不到该方法。 - 未收集所有球员:循环里每次用
player = p[1]覆盖之前的值,最后只保留了最后一个球员的名字,没把所有球员存入列表。
修正后的代码
import csv class Team: def __init__(self, roster): self.roster = roster # 缩进调整:该方法属于Team类 def GetRoster(self): return self.roster # 直接返回列表,按需格式化即可 # 收集所有球员姓名到列表 player_list = [] with open('CavsRoster.csv', newline='') as f: reader = csv.reader(f) for p in reader: # 每行索引1的元素是球员姓名,添加到列表 player_list.append(p[1]) # 把球员列表传入Team实例 cavs = Team(player_list) # 输出所有球员 print(cavs.GetRoster())
代码说明
- 先初始化空列表
player_list,循环读取CSV每行数据时,将球员姓名(p[1])追加到列表,实现所有球员的收集。 - 修正
GetRoster的缩进,使其成为Team类的方法;如果需要每行显示一个球员,可以把返回语句改成return '\n'.join(self.roster)。 - 最后将完整的球员列表传入
Team构造函数,就能通过实例获取所有球员数据。
内容的提问来源于stack exchange,提问作者ots
相关产品推荐
相关产品推荐

