More baby squeaking - iterators in a class
M.E.Farmer
mefjr75 at hotmail.com
Fri Dec 31 11:42:34 EST 2004
Terry Reedy wrote:
>This is the wrong test for what I and some others thought you were
asking.
>The requirement for p to be an *iterable* and useable in code such as
'for
>i in p' is that iter(p), not p itself, have a .next method, and
iter(p)
>will. Try ip=iter(p) followed by ip.next and ip.next() instead.
Does that mean if you dont't call iter(() on your instance or have a
next() method you can't do this:
> class R3:
> def __init__(self, d):
> self.d=d
> self.i=len(d)
> def __iter__(self):
> d,i = self.d, self.i
> while i>0:
> i-=1
> yield d[i]
>>>> p=R3('eggs')
>>>> for i in p:
>>>> print i
I am asking because I want to fully understand what makes an
*iterator*.
M.E.Farmer
More information about the Python-list
mailing list