i don’t know “self._iterator = iter(self._container)”in next code.
in django.http :
class HttpResponse(object):
def __iter__(self):
self._iterator = iter(self._container)
return self
def next(self):
chunk = self._iterator.next()
if isinstance(chunk, unicode):
chunk = chunk.encode(self._charset)
return str(chunk)
i read the api :
Return an iterator object. The first
argument is interpreted very
differently depending on the presence
of the second argument. Without a
second argument, o must be a
collection object which supports the
iteration protocol (the__iter__()
method), or it must support the
sequence protocol (the__getitem__()
method with integer arguments starting
at 0). If it does not support either
of those protocols,TypeErroris
raised. If the second argument,
sentinel, is given, then o must be a
callable object. The iterator created
in this case will call o with no
arguments for each call to itsnext()
method; if the value returned is equal
to sentinel, StopIteration will be
raised, otherwise the value will be
returned. One useful application of
the second form ofiter()is to read
lines of a file until a certain line
is reached. The following example
reads a file until “STOP” is reached:
but i also don’t know what the iter function made .
i know the __iter__:
class a(object):
def __init__(self,x=10):
self.x = x
def __iter__(self):
return self
def next(self):
if self.x > 0:
self.x-=1
return self.x
else:
raise StopIteration
Please try to use the code, rather than text, because my English is not very good, thank you
An iterator can be iterated:
To use
for item in X,Xmust be iterable.You can make your class iterable by adding
next(self)etc, as in your sample. So withThen you can do