이터레이터 프로토콜을 구현한 데이터 구조
이터레이터 프로토콜은 파이썬에서 반복 가능한 객체(Iterable)를 표현하기 위한 규약입니다. 이 규약을 따르는 데이터 구조는 __iter__
메서드를 구현하고, 이터레이터 객체를 반환해야 합니다.
이터레이터 객체는 __next__
메서드를 구현하여 반복을 제어하고, 반복이 완료되면 StopIteration
예외를 발생시켜야 합니다. 이렇게 구현된 데이터 구조는 for
루프와 같은 반복문에서 사용될 수 있으며, 직접 요소에 접근할 수도 있습니다.
아래는 이터레이터 프로토콜을 구현한 데이터 구조의 예시 코드입니다.
class MyIterator:
def __init__(self, data):
self.data = data
self.index = 0
def __iter__(self):
return self
def __next__(self):
if self.index >= len(self.data):
raise StopIteration
value = self.data[self.index]
self.index += 1
return value
my_list = [1, 2, 3, 4, 5]
my_iterator = MyIterator(my_list)
for num in my_iterator:
print(num)
위 예시 코드에서 MyIterator
클래스는 __iter__
와 __next__
메서드를 구현하여 이터레이터 프로토콜을 따릅니다. __iter__
메서드는 이터레이터 객체인 self
를 반환하고, __next__
메서드는 데이터 구조의 요소를 차례대로 반환합니다.
이러한 구현을 통해 MyIterator
객체는 for
루프에서 사용될 수 있고, 직접 요소에 접근할 수도 있습니다.
#python #이터레이터 #데이터구조