je ne sais pas "self._iterator = iter (self._container)" dans le code suivant.je ne sais pas pourquoi iter (pas __iter__) fonction utiliser à cet endroit, quelle est la moyenne de iter dans ce code
dans 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)
je lis les api:
Retour un objet iterator. Le premier argument est interprété très différemment en fonction de la présence du second argument. Sans un second argument, o doit être un objet de collection qui prend en charge le protocole d'itération (la
__iter__()
de la méthode), ou il doit prendre en charge le protocole de séquence (méthode__getitem__()
avec des arguments entiers commençant à 0). Si elle ne prend pas en charge de ces protocoles,TypeError
est élevé. Si le second argument, sentinel, est donné, alors o doit être un objet appelable . L'itérateur créé dans ce cas appellera o sans arguments pour chaque appel à sa méthodenext()
; si la valeur retournée est égale à sentinelle, StopIteration sera élevé, sinon la valeur sera retourné. Une application utile de la deuxième forme deiter()
est de lire lignes d'un fichier jusqu'à une certaine ligne est atteinte. L'exemple suivant lit un fichier jusqu'à ce que « STOP » est atteint:
mais je ne savent pas ce que la fonction iter fait.
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
S'il vous plaît essayer d'utiliser le code, plutôt que du texte, parce que mon anglais est pas très bon, merci