title: Method Resolution Order (MRO) in new-style classes?
body: <p>In the book <em>Python in a Nutshell (2nd Edition)</em> 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 no different than what was obtained with old style classes. The python version 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 with new style of classes the output should have been <strong><code>Base3</code></strong>. The call <code>Derived.__mro__</code> prints:      </p>
  
  <p><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></p>
  
  <p>I am not sure if my understanding of MRO with new style classes is incorrect or that I am doing a silly mistake which I am not able to detect. Please help me in better understanding of MRO.</p>