03-2 반복자 객체 생성
- 반복자를 만들기 위해서는 반드시 iter()와 next() 메소드를 그 멤버로 가져야 한다
- 이 때, iter() 메소드는 반복자 객체 자신(self라는 키워드로 정의 됨)을 반환하여야 하며, next() 메소드는 루프가 돌 때마다 지정된 값을 반환하는 일을 한다
홀수 값을 반환하는 반복자 객체
class OddCounter:
def __init__(self, n = 1):
self.n = n
def __iter__(self):
return self
def __next__(self):
t = self.n
self.n += 2
return t
my_counter = OddCounter()
print(next(my_counter)) # 1
print(my_counter__next__()) # 3
print(my_counter__next__()) # 5
print(my_counter__next__()) # 7
1 - 20 사이의 홀수를 출력하는 경우
for 문을 이용해서 1에서 20 사이의 홀수를 출력
class OddCounter:
def __init__(self, n = 1):
self.n = n
def __iter__(self):
return self
def __next__(self):
t = self.n
self.n += 2
return t
my_counter = OddCounter()
for x in my_counter:
if x > 20:
break
print(x, end = ' ') # 문장을 출력하고 마지막에 스페이스
특정 조건을 만족하면 StopIteration을 raise
class OddCounter:
def __init__(self, n = 1):
self.n = n
def __iter__(self):
return self
def __next__(self):
if self.n < 20:
t = self.n
self.n += 2
return t
raise StopIteration
my_counter = OddCounter()
for x in my_counter:
print(x, end = ' ')
정리
- 반복자를 만들기 위해서는 반드시 iter()와 next() 메소드를 그 멤버로 가져야 함
- 이 때, iter() 메소드는 반복자 객체 자신(self라는 키워드로 정의 됨)을 반환함
- next() 메소드는 루프가 돌 때마다 주어진 값을 반환
'프로그래머 > Python' 카테고리의 다른 글
[널널한 교수의 고급 파이썬] 04-1 Integer Objects(Small Integer Caching) (0) | 2020.12.11 |
---|---|
[널널한 교수의 고급 파이썬] 03-3 반복 가능 객체를 위한 내장함수 (0) | 2020.12.11 |
[널널한 교수의 고급 파이썬] 03-1 반복 가능 자료형과 반복자 (0) | 2020.12.11 |
[널널한 교수의 고급 파이썬] 02-3 집합과 튜플 축약 (0) | 2020.12.11 |
[널널한 교수의 고급 파이썬] 02-1, 02-2 리스트 축약 표현 (0) | 2020.12.11 |