Основной c вопрос о наследовании и «я» здесь.
Хороший код без ошибок: ( Исправление : Оказывается, это тоже НЕ ХОРОШО. Пожалуйста, обратитесь к ответам Мистера Мияги ниже.)
class A:
def __init__(self, a):
self.a = 10
self.b = { 'a': 10, 'b': 20 }
self.c = [ 1, 2, 3 ]
class B(A):
def __init__(self):
super().__init__(self)
print(self.a)
print(self.b)
print(self.c)
i = B()
Неверный код с ошибками:
class A:
def __init__(self, a, b, c):
self.a = 10
self.b = { 'a': 10, 'b': 20 }
self.c = [ 1, 2, 3 ]
class B(A):
def __init__(self):
super().__init__(self)
print(self.a)
print(self.b)
print(self.c)
i = B()
ОШИБКА :
Traceback (most recent call last):
File "./o", line 16, in <module>
i = B()
File "./o", line 11, in __init__
super().__init__(self)
TypeError: __init__() missing 2 required positional arguments: 'b' and 'c'
Не могли бы вы объяснить, почему это должно быть:
class A:
def __init__(self, a):
, но ни
class A:
def __init__(self):
, ни
class A:
def __init__(self, a, b, c):
?
Спасибо!