标签:
class Demo(object): def __init__(self,timer): self.__timer=timer self.__index=0 def __iter__(self): return self def next(self): if self.__index<self.__timer: self.__index+=1 yield self.__index else: raise StopIteration time=10 d=Demo(time) for m in d: print m
迭代的东西看了不少,感觉还是理解不好;上面的代码next方法中 没有用retrun ,用的是yield
d是Demo的instce,具有__iter__ 方法,说明d可迭代
yield是函数可迭代的标志,在这里相当于了双重的定义,汗;
如下这么搞还是可以的
class Demo(object): def t(self): yield 1 yield 2 d=Demo() for m in d.t: print m
标签:
原文地址:http://www.cnblogs.com/Citizen/p/4689430.html