title: Multiple inheritance in python3 with different signatures
body: <p>I have three classes: <code>A</code>, <code>B</code> and <code>C</code>.</p>
  
  <p><code>C</code> inherits from <code>A</code> and <code>B</code> (in this order). The constructor signatures of <code>A</code> and <code>B</code> are different. How can I call the <code>__init__</code> methods of both parent classes?</p>
  
  <p>My endeavour in code:</p>
  
  <pre><code>class A(object):
      def __init__(self, a, b):
          super(A, self).__init__()
          print('Init {} with arguments {}'.format(self.__class__.__name__, (a, b)))
  
  class B(object):
      def __init__(self, q):
          super(B, self).__init__()
          print('Init {} with arguments {}'.format(self.__class__.__name__, (q)))
  
  class C(A, B):
      def __init__(self):
          super(A, self).__init__(1, 2)
          super(B, self).__init__(3)
  
  c = C()
  </code></pre>
  
  <p>yields the error:</p>
  
  <pre><code>Traceback (most recent call last):
    File "test.py", line 16, in &lt;module&gt;
      c = C()
    File "test.py", line 13, in __init__
      super(A, self).__init__(1, 2)
  TypeError: __init__() takes 2 positional arguments but 3 were given
  </code></pre>
  
  <p>I found <a href="https://www.packtpub.com/books/content/inheritance-python">this resource</a> which explains mutiple inheritance with different set of arguments, but they suggest to use <code>*args</code> and <code>**kwargs</code> to use for all argument. I consider this very ugly, since I cannot see from the constructor call in the child class what kind of parameters I pass to the parent classes. </p>