title: An Object is created twice in Python
body: <p>I have read Expert Python Programming which has an example for multi-inheritance. The book author has explained but I did not understand it, so I would like to have another view. </p>
  
  <p>The example shows that object <code>B</code> is created two times!</p>
  
  <p>Could you please give me an intuitive explanation.</p>
  
  <pre><code>In [1]: class A(object):
      ...:     def __init__(self):
      ...:         print "A"
      ...:         super(A, self).__init__()
  
  In [2]: class B(object):
      ...:     def __init__(self):
      ...:         print "B"
      ...:         super(B, self).__init__()
  
  In [3]: class C(A,B):
      ...:     def __init__(self):
      ...:         print "C"
      ...:         A.__init__(self)
      ...:         B.__init__(self)
  
  In [4]: print "MRO:", [x.__name__ for x in C.__mro__]
  MRO: ['C', 'A', 'B', 'object']
  
  In [5]: C()
  C
  A
  B
  B
  Out[5]: &lt;__main__.C at 0x3efceb8&gt;
  </code></pre>
  
  <p>The book author said: </p>
  
  <blockquote>
    <p>This happens due to the <code>A.__init__(self)</code> call, which is made with the
    C instance, thus making <code>super(A, self).__init__()</code> call <code>B</code>'s constructor</p>
  </blockquote>
  
  <p>The point from which I didn't get its idea is how <code>A.__init__(self)</code> call will make <code>super(A, self).__init__()</code> call <code>B</code>'s constructor</p>