728x90
반응형
class IterClass(object):
    def __init__(self,start,last):
        self.currnet = start
        self.max = last
    
    def __iter__(self): #없으면 'object is not iterable' 예외 발생
        return self
    
    def __next__(self):
        if self.currnet > self.max: #current의 값이 __next__ 호출시 마다 1씩 증가되고 10이 되면 여기 if문에 도달하여 예외 발생됨
            raise StopIteration
        else:
            self.currnet += 1
            return self.currnet -1 #보여주기

 

n_list1 = IterClass(1,10)
type(n_list1)

 

n_list1.__next__() #1
n_list1.__next__() #2
n_list1.__next__() #3

 

for 문으로 바꾸면

 

for i in range(0,10):
    print(n_list1.__next__())

 

배열이나 tuple list는 iterable 가능한 객체이다.

 

내부적으로자동으로 advancedfor 같은 구문에서 next가 자동으로 호출된다.

 

마지막에 도달하면 종료되는 것이다.

 

 

728x90
반응형

+ Recent posts