码迷,mamicode.com
首页 > 其他好文 > 详细

可迭代

时间:2015-07-30 16:43:47      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!