[Tutor] Tutor Digest, Vol 102, Issue 98

eryksun eryksun at gmail.com
Sat Sep 1 03:46:33 CEST 2012

On Fri, Aug 31, 2012 at 8:20 PM, Steven D'Aprano <steve at pearwood.info> wrote:
> Sequence
>   The generalisation of lists, tuples and strings. Any object that has
>   a known length where individual items can be retrieved with the
>   __getitem__ method called sequentially: obj[0], obj[1], obj[2], ...

To expand on this, any object that has a __getitem__ method can be
iterated over until it raises an IndexError, not just object's that
have an __iter__ method, and __len__ is not a factor. For example:

    class Test(object):
        def __getitem__(self, n):
            if n > 4:
                raise IndexError
            return 'test'

    >>> list(Test())
    ['test', 'test', 'test', 'test', 'test']

More information about the Tutor mailing list