title: Python __getitem__ and in operator result in strange behavior
body: <p>What explains the following behavior:</p>
  
  <pre><code>class Foo:
      def __getitem__(self, item):
          print("?")
          return 1
  
  f = Foo()
  
  1 in f  # prints one ? and returns True
  
  5 in f  # prints ? forever until you raise a Keyboard Exception
  
  # Edit: eventually this fails with OverflowError: iter index too large
  </code></pre>