聘我网

新概念招聘3.0

python 类用户自定义迭代器

vote up0vote downstar
#!/usr/bin/env python                   
#coding=utf-8
class Squares:                          
    def __init__(self,start,stop):     
        self.value = start - 1
        self.stop = stop
    def __iter__(self):
        return  self           
    def next(self):
        if self.value == self.stop:
            raise   StopIteration                                             
        self.value += 1
        return self.value ** 2
for i in Squares(1,5):
    print i,

请问Squares类中的__iter__循环几次!具体这段代码是怎么运作的?

 

1 个答复

vote up0vote down

Python是这样解析for y in x... 语句的:

iter = x.__iter__()         
try:
    while 1:
        y = iter.next()     
        ...                 
except StopIteration: pass  
链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.