У меня есть класс, наследующий от 2 других классов, один из которых принимает аргумент init. Как правильно инициализировать родительские классы?Как обрабатывать множественное наследование в python, когда родительские функции инициализации принимают разные числа аргументов
До сих пор у меня есть:
class A(object):
def __init__(self, arg1):
self.arg1 = arg1
class B(object):
def __init__(self):
pass
class C(A, B):
def __init__(arg1):
super(C, self).__init__(arg1)
Но это бросает TypeError
, как B
не получает аргумент.
В контексте B
является надлежащим родителем C
, а A
- это смесь, в которой многие классы в проекте наследуют функциональность.
Для многократного наследования, чтобы быть практичным, по крайней мере, один из родителей должен быть на самом деле предназначен для этого. Это не похоже на то, чтобы для него был разработан A или B. – user2357112
вы должны прочитать о MRO в python http://stackoverflow.com/questions/1848474/method-resolution-order-mro-in-new-style-python-classes – giaosudau
@giaosudau Я действительно, на самом деле; концептуально я получаю это, но синтаксически я не понимаю, как реализовать то, что я пытаюсь достичь. – Jonline