我通常使用嵌套字典,但我想进入类和对象。我有一份家庭工作等级列表,如下所示:
assignment_name assignment_subject student_name due_date grade grade_pct rank
我想制作一个容纳所有学生的对象,每个学生都掌握着他们所有的作业细节。我的字典看起来像:
homeworks['student_name']['assignment_name'] = {'assignment_subject': 'math', 'due_date': '11/12/13', 'grade': 15, 'grade_pct': 15/20.0, 'rank': 'B'}
这应该是班级中的一个班级吗?
class Homeworks(object):
def _init_(self):
self.students
class student(object):
def _init_(self,student_name):
self.student_name = student_name
def add_assignment(line):
student.assignment_name = line[0]
student.assignment_subject = line[1]
student.grade = line[4]
我知道这不对。我不知道我是否走在正确的轨道上。我确实需要能够获得一个学生的成绩。 (for assignment in Homeworks['Robbie Michaels'].keys(): print Homeworks['Robbie Michaels'][assignment]['grade']
)我也想使用if assignment_subject == 'math'
等来访问它们。
答案 0 :(得分:1)
class student:
def __init__(self, student_name):
self.name = student_name
class homework:
def __init__(self,student_name,assignment_name,assignment_subject,grade):
self.student = student(student_name)
self.assignment_name = assignment_name
self.assignment_subject = assignment_subject
self.grade = grade
@classmethod
def new_hw(cls, line):
return cls(line[0],line[1],line[2],line[3])
@classmethod
def get_all_grades(cls, student_name, homework_list):
return [ x.grade for x in homework_list if student_name is x.student.name]
lines = [["abc","a","b","A"],["abc","c","d","B"],["ebc","c","d","B"]]
hw_list = [homework.new_hw(line) for line in lines]
print homework.get_all_grades("abc",hw_list)
您需要了解的是“如何设计面向对象?”。 上面的代码可能不是最好的设计,因此,试试这个以了解从哪里开始。 How do I design a class in Python?
答案 1 :(得分:0)
不要那样做。
只需制作一个Homework
班级和一个Student
班级。
您可以创建Homework
课程列表,然后将每个“家庭作业”中的学生传递给各自的对象。
例如:
class Homework(object):
def _init_(self, name, subject):
self.assignment_name = name
self.assignment_subject = name
self.students = []
def add_student(self, student):
self.students.append(student)
class Student(object):
def _init_(self, student_name):
self.student_name = student_name
你可以从那里扩展。
我 真正做的是拥有Class
个列表,每个都有作业。
每个学生都可以参加多个课程等,但这完全取决于你
玩得开心!