标签:
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