Почему метод add_student в моем классе учащихся не работает (он говорит, что требуется дополнительный аргумент, но требуется только один)?

#python #python-3.x

Вопрос:

Я создал простой список учащихся и хочу добавить созданные вручную объекты учащихся, используя метод, приведенный ниже. Он выдает ошибку, в которой говорится, что для этого требуется дополнительный аргумент.

 class Student:  def __init__(self, first_name, last_name, student_num, email, pps, middle_name):  self.first_name = first_name  self.last_name = last_name  self.student_num = student_num  self.email = email  self.__pps = pps  self.__middle_name = middle_name  self.student_list =[]    def get_full_details(self):  details = self.first_name   " "   self.last_name   " "   str(self.student_num)   " "   self.email  return details    def add_student(self, student_object):  return self.student_list.append(student_object)    # Creating 4 student objects student1 = Student("Jimmy", "Mccarthy", 1234, "johnmc@gmail.com", 8074454, "Edward") student2 = Student("James", "Flynn", 5678, "James@gmail.com", 7367736, "Borck") student3 = Student("Emma", "Mcgath", 9837, "EMChammer@hotmail.com", 3455433, "Richei") student4 = Student("Echo", "O Leary", 4334, "Echool@gmail.com", 4333357, "Wei")  Student.add_student(student1)  

Комментарии:

1. Вы вызываете add_student класс , а не экземпляр , но не сделали его @classmethod . Неясно, следует ли вместо этого вызывать его в экземпляре, превращать в правильный метод класса или что-то совсем другое.

2. student_list Для чего это нужно? Должен ли каждый студент иметь свой собственный список студентов? Или это должно быть атрибутом класса?

3. я думал, вы упомянули, что этот add_student метод находится в классе курса?

Ответ №1:

Если вы позвоните Student.add_student , вам понадобится 2 аргумента: self, student_object . Вы можете решить эту проблему , если сначала вызовете конструктор класса student1 = Student("Jimmy", "Mccarthy", 1234, "johnmc@gmail.com", 8074454, "Edward") , а затем используете add_student на student1: student1.add_student(Student("James", "Flynn", 5678, "James@gmail.com", 7367736, "Borck")) .