如何填充类实例
Posted
技术标签:
【中文标题】如何填充类实例【英文标题】:How to populate a class instance 【发布时间】:2019-12-15 16:50:43 【问题描述】:这是我去年编写的代码,它从 google 表格中获取数据,并使用它来制作 CSV 并将评估 cmets 和成绩上传到在线门户。我确信这不是最好的方法,但它确实有效。
如何获取以下代码并将其放入课程设置中?
orgid = wks1.col_values(1) # student ID in 1 = col A
names = wks1.col_values(2) # student concat names 2= col B
mark = wks1.col_values(4) # student mark 4 = col D
commentList = wks1.col_values(15) # Student comments 15 = col O *****
commentList =[x.strip(' ') for x in commentList] #removes spaces at the end of comments
del orgid[0]
del orgid[0]
del mark[0]
del mark[0]
marklist = list(zip(orgid, mark)) #combines student ID and marks for CSV
del names[0]
del names[0]
del commentList[0]
del commentList[0]
toplist = list(zip(names, commentList)) #combines student names and comments
sorting = lambda toplist: toplist[0]
toplist.sort(key=sorting)
我已经开始上课了,但这只是我所获得的。我不知道如何获取该信息并将其放入班级系统。我发现的 youtube 视频涉及创建类,但并没有涉及如何将大量数据放入其中。
class Student:
def __init__(self, name, orgid, mark, comment):
self.name=name
self.orgid=orgid
self.mark=mark
self.comment=comment
我确信这是相当基本的,但我认为这是我目前学习的地方。
【问题讨论】:
【参考方案1】:在查看实例化类之前,您不需要所有的del
调用。相反,您可以通过调用 names[1:]
来获取第一项之后的所有值 - 有关详细信息,请参阅 get everything except the first element。
至于实例化类,对于单个对象,运行:
student = Student(name, orgid, mark, comment)`
对于多个对象,您可以在 for 循环中使用 zip
函数:
for n, o, m, c in zip(orgid[1:], names[1:], marks[1:], comments[1:]):
Student(n, o, m, c)
并将这个 for 循环的结果分配给一个变量,使用列表推导:
students = [Student(n, o, m, c) for n, o, m, c in zip(orgid[1:], names[1:], marks[1:], comments[1:])]
【讨论】:
以上是关于如何填充类实例的主要内容,如果未能解决你的问题,请参考以下文章