법이 없다. 그리고 반복자는 ‘재설정’할 수 없다. 다시 반복하려면 처음 반복자를 생성했던 반복
형에
iter()
를 호출해야 한다. 반복자 자체에
iter()
를 호출하는 것은 소용이 없다. 앞에서
설명했듯이,
Iterator.__iter__()
는 단지
self
를 반환하도록 구현되었으므로 소진된 반복
자를 재설정하지 못한다.
이러한 최소한의 인터페이스가 타당하다. 실제로 모든 반복자를 재설정할 수는 없기 때문이다.
가령 반복자가 네트워크에서 패킷을 읽고 있다면, 다시 되돌릴 방법이 없다.
3
내장 함수
iter()
가 시퀀스를 특별히 우대해 주는 덕분에 [예제
17
-
1
]의
Sentence
클래스의
첫 번째 버전은 반복형이었다. 이제 반복자를 반환하는
__iter__()
를 구현하는
Sentence
클
래스의 변형을 구현해 보자.
17
.
5
_ _
iter
_ _( )가 있는
Sentence
클래스
다음 버전의
Sentence
클래스는 표준 반복자 프로토콜을 구현한다. 먼저
Iterator
디자인 패
턴을 구현하고 나서 제너레이터 함수를 구현해 보자.
17
.
5
.
1
Sentence
버전 #
2
: 고전적인 반복자
Sentence
클래스의 다음 버전은 『
GoF
의 디자인 패턴(개정판)』의 청사진에 따라 고전적인 반
복자 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month, and much more.