有没有大佬知道这个怎么做啊,给个大概思路就行,就是要去查哪方面的代码(python)

项目2:
在此项目中,您将创建4个类(类):
1,学生;2班级类,3课程;4教师
尝试定义具有以下关系的类的必要属性和函数:
一个学生属于一个班级(班级),并且可以注册不同的课程
一个课程包含一个注册学生名单和一个教师,每个学生都有这个课程的成绩。
老师可以教不同的课程(班级)。
请创建的对象包括:2门课(班级)(A和B班),每个班有20名学生(班级)、3门课程(数学、英语、Python)和3名老师(John、约翰、彼得和Brine),然后实现以下事务:
每个学生必须修3门课程,并打印出其成绩单(成绩单)
每位老师回答一门课程,输出(以班级为单位)的注册学生的成绩表,计算班级平均成绩(班级),并记最高和最低分数。
对于每门课(班级),根据3门课程的成绩和对学生名单进行排序。
*这些课程的学生信息和成绩可以由你自己生成。


class Student:
    def __init__(self, name, grade):
        self.name = name
        self.grade = grade

class Course:
    def __init__(self, name, teacher):
        self.name = name
        self.teacher = teacher
        self.students = []
    
    def add_student(self, student):
        self.students.append(student)
    
    def get_student_grades(self):
        return [student.grade for student in self.students]

class Class:
    def __init__(self, name):
        self.name = name
        self.students = []
        self.courses = []
    
    def add_student(self, student):
        self.students.append(student)
    
    def add_course(self, course):
        self.courses.append(course)
    
    def get_class_avg(self):
        total = 0
        for course in self.courses:
            total += sum(course.get_student_grades())
        return total / len(self.students) / len(self.courses)
    
    def get_class_highest_grade(self):
        highest = 0
        for course in self.courses:
            highest = max(highest, max(course.get_student_grades()))
        return highest
    
    def get_class_lowest_grade(self):
        lowest = 100
        for course in self.courses:
            lowest = min(lowest, min(course.get_student_grades()))
        return lowest
    
    def sort_class_by_grades(self):
        self.students.sort(key=lambda x: sum([y.grade for y in x.courses]), reverse=True)

class Teacher:
    def __init__(self, name):
        self.name = name
        self.courses = []
    
    def add_course(self, course):
        self.courses.append(course)
    
    def get_student_grades(self, class_name):
        student_grades = {}
        for course in self.courses:
            if class_name in [x.name for x in course.students]:
                for student in course.students:
                    if student.name in student_grades:
                        student_grades[student.name].append(student.grade)
                    else:
                        student_grades[student.name] = [student.grade]
        return student_grades
    
    def get_class_avg(self, class_name):
        total = 0
        count = 0
        for course in self.courses:
            if class_name in [x.name for x in course.students]:
                grades = [x.grade for x in course.students if x.name == class_name]
                total += sum(grades)
                count += len(grades)
        return total / count
    
    def get_class_highest_grade(self, class_name):
        highest = 0
        for course in self