Я пытаюсь наследовать от 2 базовых классов.
Конструктор первого базового класса (Base1
) не принимает аргументов:
class Base1(object):
def __init__(self):
...
Второй базовый класс (Base2
) конструктор принимает один аргумент, id
:
class Base2(object):
def __init__(self, id):
...
В моем производном классе я пытаюсь вызывать каждый конструктор базового класса по очереди:
class Deriv(Base1, Base2):
def __init__(self):
super(Base1, self).__init__()
super(Base2, self).__init__("hello world")
Это происходит со следующей ошибкой:
super(Base1, self).__init__()
TypeError: __init__() missing 1 required positional argument: 'id'
Как правильно вызвать каждый конструктор базового класса с правильным списком аргументов?
Вот пример приложения, которое воспроизводит ошибку, с которой я столкнулся:
#!/usr/bin/env python3
class Base1(object):
def __init__(self):
pass
class Base2(object):
def __init__(self, id):
self.id = id
class Deriv(Base1, Base2):
def __init__(self):
super(Base1, self).__init__()
super(Base2, self).__init__("hello world")
def main():
Deriv()
if __name__ == '__main__':
main()
Вот трассировка:
Traceback (most recent call last):
File "./test.py", line 20, in <module>
main()
File "./test.py", line 17, in main
Deriv()
File "./test.py", line 13, in __init__
super(Base1, self).__init__()
TypeError: __init__() missing 1 required positional argument: 'id'