de iteración para __getitem__
puede ser visto como una "característica legado" que permitió la transición más suave cuando PEP234 introdujo iterabilidad como concepto primario. Solo se aplica a las clases sin __iter__
cuyo __getitem__
acepta números enteros 0, 1, & c, y aumenta IndexError
una vez que el índice es demasiado alto (si alguna vez), por lo general aparecen "secuencias" codificadas antes de __iter__
(aunque nada impide codificar nuevas clases de esta manera también).
Personalmente, prefiero no confiar en esto en un código nuevo, aunque no está en desuso ni se va a ir (funciona bien en Python 3 también), así que esto es solo cuestión de estilo y gusto ("explicito es mejor") que implícita "así que preferiría apoyar explícitamente la iterabilidad en lugar de confiar en __getitem__
para que la respalde implícitamente para mí, pero no como un bigge).
Cierto, pero __getitem __() no es lo mismo que __iter __(). – grieve