2016-08-31 7 views
0

У меня есть класс, наследующий от 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 - это смесь, в которой многие классы в проекте наследуют функциональность.

+0

Для многократного наследования, чтобы быть практичным, по крайней мере, один из родителей должен быть на самом деле предназначен для этого. Это не похоже на то, чтобы для него был разработан A или B. – user2357112

+0

вы должны прочитать о MRO в python http://stackoverflow.com/questions/1848474/method-resolution-order-mro-in-new-style-python-classes – giaosudau

+0

@giaosudau Я действительно, на самом деле; концептуально я получаю это, но синтаксически я не понимаю, как реализовать то, что я пытаюсь достичь. – Jonline

ответ

1

Вы можете вызвать __init__ родительских классов вручную.

class C(A, B): 
    def __init__(arg1): 
      A.__init__(self,arg1) 
      B.__init__(self)