This happens in Python 2.7.6 and 3.3.3 for me. When I define a class like this
class foo: def __getitem__(self, *args): print(*args)
__iter__ is the preferred way to iterate through an iterable object. If it is not defined the interpreter will try to simulate its behavior using __getitem__. Take a look here
__iter__
__getitem__