title: How is True < 2 implemented?
body: <p>It's not implemented directly on bool.</p>
  
  <pre><code>&gt;&gt;&gt; True.__lt__(2)
  AttributeError: 'bool' object has no attribute '__lt__'
  </code></pre>
  
  <p>And it's apparently not implemented on <code>int</code> either:</p>
  
  <pre><code>&gt;&gt;&gt; super(bool, True).__lt__(2)
  AttributeError: 'super' object has no attribute '__lt__'
  </code></pre>
  
  <p>There is no reflected version of <code>__lt__</code> for <code>2</code> to control the operation, and since <code>int</code> type is not a subclass of <code>bool</code> that would never work anyway.  </p>
  
  <p>Python 3 behaves as expected:</p>
  
  <pre><code>&gt;&gt;&gt; True.__lt__(2)
  True
  </code></pre>
  
  <p>So, how is <code>True &lt; 2</code> implemented in Python 2?</p>