동일한 기능을 파이썬스럽게 구현하려면 SequenceIterator 클래스 대신 제너레이터 함수를 사용한다.
#제너레이터 함수를 사용해서 구현한 Sentence
import re
import reprlib
RE_WORD = re.compile('\w+')
class Sentence:
def __init__(self, text):
self.text = text
self.words = RE_WORD.findall(text)
def __repr__(self):
return 'Sentence(%s)' reprlib.repr(self.text)
def __iter__(self):
for word in self.words:
yield word
return
Sentence 코드에서iter—( )는 SentenceIterator ( ) 생성자를 호출해서
반복자를생성하고반환했다. [예제 14-5] 의 반복자는사실 제너레이터 객체로서__iter( )
메서드를호출할 때 자동으로 생성된다. 여기서 iter( )는 제너레이터 함수이기 때문이다.
다음 절에서는 제너레이터 함수에 대해 자세히 설명한다.