A Standard

Steven Taschuk staschuk at telusplanet.net
Tue May 27 16:17:25 EDT 2003


Quoth Andrew Koenig:
> Greg> Andrew Koenig wrote:
  [...]
> Greg> And in Python, every sequence (i.e. something that
> Greg> implements __getitem__) can be iterated over, so
> Greg> every algorithm that operates on iterables will
> Greg> also operate on sequences.
> 
> You mean it is impossible for a user-defined type to implement
> __getitem__ without also implementing __iter__?

This is not so, but in a sense it might as well be: iterating over
an object will use __iter__ if present, but if not, will fall back
on __getitem__ with integer indices.

    >>> class Seq(object):
    ...     def __getitem__(self, index):
    ...         return index
    ... 
    >>> it = iter(Seq())
    >>> it.next()
    0
    >>> it.next()
    1

Seqs do not implement __iter__, but are iterable.

  [...]
-- 
Steven Taschuk                  staschuk at telusplanet.net
"Telekinesis would be worth patenting."  -- James Gleick





More information about the Python-list mailing list