如何从.txt文件读取每行数据创建对应Student类的对象实例
问题原因
你当前的代码存在以下几个核心问题:
- 缩进错误:
for循环下方的行处理代码没有缩进,只会在循环结束后执行1次,只能读取到循环结束后最后一次赋值的line内容 - 没有初始化容器存储生成的
Student实例,每次解析出来的name/age/grade变量会被新的行内容覆盖 - 换行符转义符写错为
/n,实际应为\n,且strip()方法已经可以自动清除首尾空白/换行符,该处理逻辑冗余 split()拆分出来的age、grade为字符串类型,需要转换为数值类型再传入类构造函数
修正后可运行代码
class Student(): def __init__(self, name, age, grade): self.name = name self.age = age self.grade = grade # 初始化列表存储所有Student实例 student_list = [] with open("students.txt", "r") as f: for line in f.readlines(): # 处理行内容,拆分属性 data = line.strip() name, age, grade = data.split("|") # 转换数值类型,实例化Student后加入列表 stu = Student(name, int(age), int(grade)) student_list.append(stu) # 验证:打印所有学生信息 for stu in student_list: print(f"姓名:{stu.name},年龄:{stu.age},分数:{stu.grade}")
逻辑说明
- 提前声明空列表
student_list,用来存储每一行生成的Student实例 - 调整行处理代码的缩进,让每一行的解析、实例化逻辑都在
for循环内执行 - 拆分内容后对
age、grade做类型转换,保证属性类型符合预期 - 每生成一个
Student实例就追加到列表中,避免数据被覆盖
内容的提问来源于stack exchange,提问作者Candyman
相关产品推荐
相关产品推荐

