2017-08-17 435 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()作爲學生傳入」,那麼它是不是將該列表附加到對象上。這是我感到困惑的地方。如果我將一個對象放入一個列表中,那麼這很有用嗎? –