다음 코드에서 "self._iterator = iter (self._container)"를 모른다. django.http에서왜이 곳에서 iter (__iter__가 아닌) 함수가 사용되는지 모르지만이 코드에서 iter의 평균은 무엇입니까
는 :
반환하는 반복자 객체 :
내가 API를 읽어 보시기 바랍니다. 첫 번째 인수는 두 번째 인수의 존재 여부에 따라 으로 다르게 해석됩니다. 번째 인수없이, O는 반복 프로토콜합니다 (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)
__iter__()
방법)를 지원하는 컬렉션 오브젝트이거나 그것을 시퀀스 프로토콜 (정수 인자는 0 시작과__getitem__()
방식)을 지원한다. 해당 프로토콜 중 을 지원하지 않으면TypeError
은 입니다. 두 번째 인수 인 sentinel이 주어지면 o는 호출 가능 객체 여야합니다. 이 경우에 을 작성한 반복자는next()
메소드를 호출 할 때마다 인수가없는 o를 호출합니다. 반환 된 값이 센티넬에 인 경우 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
당신