【发布时间】:2020-11-30 03:39:16
【问题描述】:
我创建了一个包含以下构造函数的类:
class Student:
def __init__(self, student_id, student_name, student_marks):
self.student_id = student_id
self.student_name = student_name
self.student_marks = student_marks
我正在访问一个包含以下格式的文本行的文本文件:
1,Harvey Specter,97
2,Mike Ross,84
3,Krimhilde Aust,94
第一个整数是学生ID,字符串是姓名,最后一个整数是标记。
我想遍历文本文件中的每一行,将其转换为列表并使用列表中的元素为我的类创建一个对象。到目前为止,我有这个:\
with open('records.txt', 'r') as records:
for line in records:
line = line.replace(',',' ')
x = line.split()
x[1:3] = [' '.join(x[1:3])]
我想在每次迭代中为我的类创建一个新对象,如下所示:(我知道这是错误的)
x[0] = Student(x[0],x[1],x[2]
这里的问题在于我的变量。我需要(我知道这是错误的,请不要激怒我大声笑)动态为我的 for 循环将创建的每个列表创建一个唯一变量,以便我可以向我的班级发送一个新对象。
我想我需要创建一个新的学生 ID 列表并使用它来创建变量?
【问题讨论】:
-
"为我的 for 循环将创建的每个列表动态创建一个唯一变量" 你为什么这么认为?每次通过列表,您使用
Student(x[0],x[1],x[2]),并创建一个新的Student。没问题。 “这样我就可以向我的班级发送一个新对象。”我不知道您认为“将对象发送给班级”是什么意思。 -
对于初学者,使用
csv模块,不要乱用手动解析你的csv。 -
无论如何,不,您永远需要动态创建变量。使用像
list或dict这样的容器。这里的列表似乎是一种合理的方式。
标签: python list class variables