title: python bug with __le__, __ge__?
body: <p>Is it me or python that is confused with the following code ?  I would expect <code>__le__</code> to be called by <code>a &lt;= ab</code>, not <code>__ge__</code>:</p>
  
  
  
  <pre><code>#!/usr/bin/env python2
  
  class B(object):
      def __ge__(self, other):
          print("__ge__ unexpectedly called")
  
  class A(object):
      def __le__(self, other):
          print("__le__ called")
  
  class AB(A, B):
      pass
  
  a = A()
  ab = AB()
  
  a &lt;= ab # --&gt; __ge__ unexpectedly called
  ab &lt;= a # --&gt; __le__ called
  </code></pre>
  
  <p>I get the same behavior with python 2.7, 3.2 and pypy 1.9.  </p>
  
  <p>What can I do to get <code>__le__</code> called instead of <code>__ge__</code> ??</p>