2012-10-26 9 views
3

가능한 중복 :
Build a Basic Python Iterator파이썬 이터레이터의 인터페이스는 무엇입니까?

반복자를 정의하기위한 필요한 방법은 무엇입니까? 예를 들어 다음 Infinity 반복기에서는 메서드가 충분합니까? 반복기를 정의하는 다른 표준 또는 de factor 표준 메소드가 있습니까?

class Infinity(object): 
    def __init__(self): 
     self.current = 0 

    def __iter__(self): 
     return self 

    def next(self): 
     self.current += 1 
     return self.current 

답변

5

파이썬 2.x를위한 충분하지만, 파이썬 3.x를 당신은 PEP 3114를 참조 next 대신 기능 __next__를 정의 할 필요가있다.

2.x 및 3.x와 호환되는 코드가 필요한 경우이 두 가지를 모두 포함하십시오.

+2

@Arion : 그냥 문을'추가, 모두를 정의하려면 __next__ = next' 클래스의 끝에. – martineau

1

glossary 따르면, 반복자는 next() 방법 및 __iter__() 방법 개체이다. 당신은 무엇

0

Section 4.5 - Iterator Types

당신은 당신의 용기에 대해 정의해야합니다

container.__iter__() #-> returns iterator 

을하고 반복자 대한 정의해야합니다

iterator.__iter__() #-> returns self 
iterator.__next__() #-> returns next item 
iterator.next() #(for Python2 compatibility) -> returns self.__next__() 
관련 문제