본문 바로가기
programming/Python

파이썬 클래스 반복자 사용하기 using python class iterator

by 개코 - 개발과 코딩 2021. 11. 18.

파이썬의 클래스로 반복자를 설정하면 다양한 작업을 할 수 있다. 별도의 작업을 하지 않아도 클래스 메서드를 사용하여 반복을 할 수 있다. 물론 컬렉션 데이터를 이용해 반복자를 굳이 만들어 사용할 필요는 없겠지만 반복적인 수치작업이나 규칙적인 데이터 작업을 하기 위해선 필요할 수 있다.

파이썬 클래스 반복자 사용하기
using python class iterator 

파이썬의 클래스를 이용하여 반복자를 사용할 수 있다.

본인은 실제로 사용해 본 적은 없지만 현업에서 어떤 용도로 사용할 지 극히 궁금하기도 하다.

당연하겠지만, 클래스 변수로 컬렉션 데이터를 받았다면 그 컬렉션 데이터를 사용하는데 반복자는 유용할 것이다.

어찌됐든 클래스에 반복자를 사용하는 것은 유용한 측면이 있는 것은 사실이다.

비슷한 기능이나 관련된 처리 등은 클래스로 묶고 메서드로 사용하는 것이 편하기 때문이다.

사용법

파이썬 클래스를 이용해 클래스 변수를 만들고 클래스 메서드를 만드는 것은 이미 알 것이다.

반복자를 사용하는 것은 조금 어려워 보일 수도 있겠지만 init 함수와 사용은 비슷하다.

클래스 자신을 반복자로 만들고 반복을 위한 처리를 하도록 하면 된다.

반복자를 만드는 것은 iter 함수를 사용하고 반복처리를 위한 것은 next 함수를 사용한다.

class IteratorClass : #-{

    def __iter__(this) : #-{
        this.property = 10
        return this
    #-}
    
    def __next__(this) : #-{
        vNext = this.property
        this.property += 10
        return vNext
    #-}

#-}

샘플코드

위의 코드는 클래스를 이용해 반복자를 사용하는 모든 것을 보여준다.

클래스 변수인 프로퍼티에 값을 설정하여 iter 함수를 이용해 반복자로 설정해 준다.

next 함수를 사용하여 호출할 때마다 10을 곱해주도록 하였다.

코드를 보자.

print('----------')

#- 클래스부분
class IteratorClass : #-{

    def __iter__(this) : #-{
        this.property = 10
        return this
    #-}
    
    def __next__(this) : #-{
        vNext = this.property
        this.property += 10
        return vNext
    #-}

#-}

print('----------')

vClass = IteratorClass()
vIter = iter(vClass)

vValue = next(vIter)
print(type(vValue), vValue)

vValue = next(vIter)
print(type(vValue), vValue)

vValue = next(vIter)
print(type(vValue), vValue)

vValue = next(vIter)
print(type(vValue), vValue)

print('----------')

결과화면을 보면 이해하기 쉽다.

 

반응형

댓글