Python 2.7 __init__() принимает ровно 2 аргумента (дано 3)
У меня есть эти классы.Person
родительский класс и Student
это дочерний класс:
class Person(object):
def __init__(self, name):
self.name = name
class Student(Person):
def __init__(self, avr, name):
self.avr = avr
super(Student, self).__init__(self, name)
Я получаю эту ошибку, когда пытаюсь создать экземпляр Student
:
__init__() takes exactly 2 arguments (3 given)
Что не так с моим кодом?
2 ответа
Решение
Если вы используете супер, вы не проходите self
к целевому методу. Это передается неявно.
super(Student, self).__init__(name)
Это всего 2 аргумента (self, name). Когда вы прошли self
, это было всего 3 (я, я, имя).
Ты можешь использовать
super(Student, self).__init__(name)
в котором self было передано методу init, поэтому вам не нужно снова записывать его в __init__
метод. Но если вы используете
super(Student, Student).__init__(self, name)
или же
super(Student, self.__class__).__init__(self, name)
Вы должны записать себя в __init__
метод.