如何填充类实例

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:])]

【讨论】:

以上是关于如何填充类实例的主要内容,如果未能解决你的问题,请参考以下文章

如何让我的网格填充所有单元格?

如何在子文档中填充模型实例数组? MongoDB猫鼬

如何建立自己的认知体系

从 SKSpriteNode 类实例访问 GameScene 中的数组?

将Json数据 填充到 实例类 的函数

如何向引导程序版本 5 的容器流体类添加水平填充?