Поддержка итерации для __getitem__
может рассматриваться как «унаследованная особенность», которая позволяла более плавно переходить, когда PEP234 вводил итеративность как основную концепцию. Он применяется только к классам без __iter__
, чьи __getitem__
принимают целые числа 0, 1 и & c и повышают IndexError
, когда индекс становится слишком высоким (если вообще когда-либо), как правило, классы «последовательности», закодированные до появления __iter__
(хотя ничто не мешает вам так же кодировать новые классы).
Лично я бы предпочел не полагаться на это в новом коде, хотя это не считается устаревшим и не исчезает (тоже хорошо работает в Python 3), так что это просто вопрос стиля и вкуса ("явное лучше, чем неявное ", поэтому я предпочел бы явно поддерживать итеративность, а не полагаться на __getitem__
, поддерживающую его неявно для меня - но не большое значение."