[Python-Dev] Re: Single- vs. Multi-pass iterability

Oren Tirosh oren-py-d@hishome.net
Tue, 9 Jul 2002 08:27:19 -0400


On Tue, Jul 09, 2002 at 08:14:38AM -0400, François Pinard wrote:
> This is all clear to me, except for one little thing.  I wonder why class
> `ifile' has an `__iter__' method itself.  I know it is said to be the
> "iterator protocol", and I wonder why it has to be.

I don't like it either.  In my previous message about the language 'Mamba' 
in an alternative universe I have an example of an alternative: if object 
has a tp_iter it is called, otherwise the object must have a tp_next.

> My understanding is that `__iter__' returns an iterator all ready to be
> enquired a number of times through `.next()' calls, and I presume that
> if any re-initialisation has to take place, it is within `__iter__'.
> However, as the iterator maintains its own progressive state, I do not see
> the intent and purpose of the iterator having an `__iter__' method itself.
> Would it make sense using the iterator `__iter__' as the preferred place
> where it re-initialises itself?

As far as I can tell this was done so that for could iterate over both
iterables and iterators.  I just don't see why it has to be done by all
iterators instead of in just one place, adding much confusion between
iterators and iterables in the process.

	Oren