Ошибка при попытке переопределить __init __ (): TypeError: __init __ () принимает 1 позиционный аргумент, но 2 были заданы - PullRequest
0 голосов
/ 28 марта 2020

Я считаю, что эта ошибка связана с тем, как я передаю kwargs в свой базовый init, но я не уверен, что я делаю здесь неправильно. Может ли кто-нибудь просветить меня? Я просто хочу, чтобы этот код выводил «1 2»

def main():
   child = Child(2, first=1)
   child.display()


class Base():

   def __init__(self, **kwargs):
       print(kwargs.get("first", "nice try"))


class Child(Base):

   def __init__(self, value, **kwargs):
       super().__init__(self, **kwargs)
       self.value = value

   def display(self):
       print(self.value)


main()

Вот полная ошибка:

 super().__init__(self, **kwargs)
 TypeError: __init__() takes 1 positional argument but 2 were given

1 Ответ

0 голосов
/ 28 марта 2020

Каждый метод класса init имеет self в качестве аргумента, позволяющего добавлять атрибуты к этому вновь созданному экземпляру класса. Вызов super().__init__(self, **kwargs) in Child.init приводит к Base(Child, **kwargs). Базовый конструктор принимает только один аргумент, поэтому возникает ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...