У меня есть 2 класса: A (для инициализации требуется 1 аргумент) и B (для инициализации необходимо 2 аргумента) и третий класс C, производный от A и B.
class A:
def __init__(self, sval):
print("A: rcd value: ", sval)
self.aval = sval
class B:
def __init__(self, sval, tval):
print("B: rcd 2 values: ", sval, tval)
self.aval=sval
self.bval=tval
class C(A,B):
def __init__(self, a, b, c):
super().__init__(a)
super().__init__(b,c) # error here
c = C(1,2,3)
Когда я запускаю приведенный выше код, в последней строке появляется ошибка;Называется __init__
класса A, а не класса B.
A: rcd value: 1
Traceback (most recent call last):
File "inheritance.py", line 20, in <module>
c = C(1,2,3)
File "inheritance.py", line 16, in __init__
super().__init__(b,c)
TypeError: __init__() takes 2 positional arguments but 3 were given
Как я могу вызвать __init__
функции как A, так и B из __init__
класса C?
Edit: я использую Python 3.5.3 на Debian Linux, хотя я предпочту решение, которое работает как на Python2, так и на Python3.