2017-08-17 43 views
0

有人能帮助我理解吗?我不明白这条线路上发生了什么,或者它为什么起作用:course_running.add_student(self)混淆:course_running.add_student(self)

我认为这是一个面向对象的概念,但任何人都可以帮助使这个更清晰?

class Student: 
    def __init__(self, name, student_number): 
     self.name = name 
     self.student_number = student_number 
     self.classes = [] 

    def enrol(self, course_running): 
     self.classes.append(course_running) 
     course_running.add_student(self) 

class CourseRunning: 
    def __init__(self, course, year): 
     self.course = course 
     self.year = year 
     self.students = [] 

    def add_student(self, student): 
     self.students.append(student) 

回答

1

course_runningCourseRunning类的一个对象,并course_running.add_student(self)呼吁它的命名add_student类,这是附加学生students列表的方法。

1

你在Studentenrol()功能正在采取两个参数:selfcourse_running

self是您当前班级的实例(Student

这就是为什么在你的add_student()功能(这也有两个参数:self(在CourseRunning类的当前实例)和student(这简直是一个Student)的实例)。

这就是为什么你可以传递enrol()selfstudentadd_student()

+0

如果我“在add_student()中将自己从enroll()作为学生传入”,那么它是不是将该列表附加到对象上。这是我感到困惑的地方。如果我将一个对象放入一个列表中,那么这很有用吗? –