title: Passing arguments to the right inherited class with super()
body: <p>Let assume that a class inherits 2 classes: one takes 1 argument, the other none.
  How do I ensure that the argument is passed to the class accepting the argument independently of the order of the subclasses?</p>
  
  <p>Specifically, I have problems with this example:</p>
  
  <pre><code>class Generic(object):
      def __init__(self,data): 
          self.data=data
      def do_data(self):
          print(self.data)
  class Generic2(object):
      def __init__(self):
          pass
      def no_data(self):
          print("No_data")
  class MyClass(Generic2,Generic):
      def __init__(self,data):
          self.data=data
          super().__init__(data)
  A=MyClass("A")
  </code></pre>
  
  <p>Returns a TypeError due to <strong>init</strong> arguments.</p>
  
  <p>The error is simply corrected by using:</p>
  
  <pre><code>  ...
   class MyClass(Generic,Generic2):
    ...
  </code></pre>
  
  <p>I assume that <code>super()</code> uses the MRO to decide which class to initialise.</p>
  
  <p>The question is: in Python3, how can I ensure that the arguments are sent to the correct subclass independently of the order of my subclasses?</p>
  
  <p>(be gentle... I have very flaky knowledge of anything OO!)</p>