对于学校项目,我必须编写一个记录学生记录并显示它们的python程序。
我的学校说她想要一个代表学校注册的课程,但我不知道我是怎么做的。
我创建了以下内容:
class SchoolRegister:
def __init__(self):
ListOfPupils = {}
def REgisterPupil(self, lastname, firstname, schoolID):
ListOfPupils[schoolID] = (lastname, firstname)
sr = SchoolRegister()
sr.REgisterPupil("Thomas", "Lucy", 1)
sr.REgisterPupil("Percival", "Jenny", 2)
我想通过列表,所以我得到列表: 1,托马斯,露西 2,Percival,Jenny
我搜索并找到了一种让课程充当学生名单的方式,所以我可以为sr做一个但是我不理解它:(
答案 0 :(得分:2)
这个问题提供了一个平台,我们可以在其上讨论一些有趣的面向对象编程概念!理想情况下,我们希望通过创建代表现实世界的数据模型,用代码映射现实世界。这是面向对象编程为我们提供的继承值。
让我们用你的例子。
我们的重点是能够创建存在的学生的记录(也许我们应该为学生建模并创建定义学生对我们意味着什么的参数)并注册(我们理想地希望能够在我们可以访问的中心位置添加和删除学生并能够检索我们学生的状态。
因此,我们可以继续实施一个简单的Student
课程,就我们而言代表学生(难以真正量化人类的几个因素,所以让我们缩小我们的注意力: d):
class Student:
def __init__(self, id, first_name, last_name):
self.id = id
self.first_name = first_name
self.last_name = last_name
我们现在能够创建代表学生的对象并以结构化方式存储该信息。现在转到学校注册表,让我们考虑一下我们需要什么样的数据。我们怎样才能全面了解所有存在的学生?我们可以使用的可能数据结构可能是list
!这使我们可以选择(1)存储所有存在的学生(2)维护学生插入列表的顺序(或者也许就读于学校。)
如果我们希望能够快速访问Student
对象怎么办?也许我们想要更多地了解注册中的学生,我们可以访问他们的id
。那么在这种情况下,我们可以使用dict
,使用某种独特的标识符(即id
)为我们提供简单的学生查找。
让我们继续并实现一个简单的例子:
class SchoolRegister:
def __init__(self):
self.students = {}
def register_student(self, student):
self.students[student.id] = student
def get_student_by_id(self, id):
return self.students[id]
现在我们可以(1)创建Student
,(2)将其添加到我们的记录中,(3)使用密钥(他们的身份)查找学生信息,如下所示:
school_register = SchoolRegister()
john_doe = Student(0, 'John', 'Doe')
school_register.register_student(john_doe)
school_register.get_student_by_id(0) # John Doe!
推荐读物: