Я определил дочерний класс B, унаследованный от класса A. Я хочу дать только один параметр в функции __init__
класса B. Для функции __init__
класса A требуется четыре аргумента, которые создаются в __init__
Функция А. Мне было интересно, будет ли это работать в Python 3. Мой код будет выглядеть как-то ниже.
class A():
__init__(self,a1,a2,a3,a4):
...
class B(A):
__init__(self,b):
...
# the arguments a1 a2 a3 a4 for the parent class are generated
a1 = ...
a2 = ...
a3 = ...
a4 = ...
# call the __init__ function of the parent class using super
super().__init__(a1,a2,a3,a4)
object = B(b0)
Я скопировал и изменил код от другого человека, который вместо этого использовал Python 2. Когда я запустил код в Python 3, я получил следующую ошибку:
__init__()
отсутствует 4 обязательных позиционных аргумента: «a1», «a2», «a3» и «a4». Мне было интересно, так ли это, потому что я не включил аргументы, необходимые для A, в __init__()
из B.
Обновление
Я только что заметил, что была опечатка. Я написал _init_(self, b)
(с одним подчеркиванием), где я должен использовать ___init__(self, b)
(с двойным подчеркиванием). После исправления этой опечатки ошибка не появилась. Таким образом, ответ на мой вопрос "нет".