Это происходит в Python 2.7.6 и 3.3.3 для меня. Когда я определяю класс, подобный этому
class foo:
def __getitem__(self, *args):
print(*args)
И затем попробуйте выполнить итерацию (и то, что, как я думал, вызовет iter) в экземпляре,
bar = foo()
for i in bar:
print(i)
он просто подсчитывает один для аргументов и печатает None навсегда. Является ли это преднамеренным в плане дизайна языка?
Пример вывода
0
None
1
None
2
None
3
None
4
None
5
None
6
None
7
None
8
None
9
None
10
None