【发布时间】:2009-12-24 08:12:14
【问题描述】:
我不知道下一个代码中的“self._iterator = iter(self._container)”。
在 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)
我读了 api:
返回一个迭代器对象。首先 论据被解释得很 因存在而异 的第二个论点。没有 第二个参数,o 必须是 支持的集合对象 迭代协议(
__iter__()方法),或者它必须支持 序列协议(__getitem__()以整数参数开头的方法 在 0)。如果不支持 在这些协议中,TypeError是 提高。如果是第二个参数, 哨兵,给定,那么 o 必须是 可调用对象。创建的迭代器 在这种情况下将调用 o 没有 每次调用其next()的参数 方法;如果返回的值相等 到哨兵,StopIteration 将是 提高,否则价值将是 回来。一个有用的应用iter()的第二种形式是阅读 文件的行直到某一行 到达了。下面的例子 读取文件直到达到“STOP”:
但我也不知道 iter 函数做了什么。
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
请尽量使用代码,而不是文字,因为我的英文不是很好,谢谢
【问题讨论】: