2014-12-10 3 views
1

, 나는 혼란 스러워요 :이해 사용자 정의 반복자 아래의 코드에서

class Counter(object): 
    def __init__(self, size): 
     self.size = size 
     self.start = 0 

    def __iter__(self): 
     print "called __iter__", self.size 
     return self 

    def next(self): 
     if self.start < self.size: 
      print 'Hi1' 
      self.start = self.start + 1 
      print 'Hi2' 
      return self.start 
      print 'Hi3' 
     raise StopIteration 

c = Counter(2) 
for num in c: 
    print num 

답변

1

당신이 return self.start 문을지나 갈 필요가 print 'Hi3'에 도달하기 위해. return 문은 즉시 함수를 종료한다는 것을 기억하십시오. (반복자와 생성자를 섞어서 return 대신 yield을 생각한 것일 수도 있습니다.)

관련 문제