Method Resolution Order (MRO) in new style Python classes
<p>In the book "Python in a Nutshell" (2nd Edition) there is an example which uses<br>
old style classes to demonstrate how methods are resolved in classic resolution order and<br>
how is it different with the new order. </p>

<p>I tried the same example by rewriting the example in new style but the result is<br>
no different than what was obtained with old style classes. The python version<br>
I am using to run the example is <strong>2.5.2.</strong> Below is the example: </p>

<pre><code>class Base1(object):  
    def amethod(self): print "Base1"  

class Base2(Base1):  
    pass

class Base3(object):  
    def amethod(self): print "Base3"

class Derived(Base2,Base3):  
    pass

instance = Derived()  
instance.amethod()  
print Derived.__mro__  
</code></pre>

<p>The call <code>instance.amethod()</code> prints <strong><code>Base1</code></strong>, but as per my understanding of the MRO<br>
with new style of classes the output should have been <strong><code>Base3</code></strong>. The<br>
call <code>Derived.__mro__</code> prints:      </p>

<pre><code>(&lt;class '__main__.Derived'&gt;, &lt;class '__main__.Base2'&gt;, &lt;class '__main__.Base1'&gt;, &lt;class '__main__.Base3'&gt;, &lt;type 'object'&gt;)
</code></pre>

<p>I am not sure if my understanding of MRO with new style classes is incorrect or<br>
that I am doing a silly mistake which I am not able to detect. Please help me<br>
in better understanding of MRO. </p>
