码迷,mamicode.com
首页 > 编程语言 > 详细

[小知识]Python迭代器相关 @ Python

时间:2015-09-02 13:37:07      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

class Fib(object):
    def __init__(self):
        self.a, self.b = 0, 1 # 初始化两个计数器a,b

    def __iter__(self):
        return self # 实例本身就是迭代对象,故返回自己

    def next(self):
        self.a, self.b = self.b, self.a + self.b # 计算下一个值
        if self.a > 100000: # 退出循环的条件
            raise StopIteration();
        return self.a # 返回下一个值

实现一个迭代器,必须包含__iter__和next这两个方法。可以有两种方法来使用这个class。

一,当做一个for循环来使用:

>>> for n in Fib():
...     print n
...
1
1
2
3
5
...
46368
75025

二,调用next方法。

f = Fib()
for i in range(10):
    print f.next()

打印结果得:

1
1
2
3
5
8
13
21
34
55

再来一个例子:

class A(object):

    def __init__(self, o):
        self.__obj__ = o

    def __getattr__(self, name):
        if hasattr(self.__obj__, name):
            return getattr(self.__obj__, name)
        return self.__dict__[name]

    def __iter__(self):
        return self.__obj__.__iter__()

l = []
a = A(l)

for i in xrange(101): a.append(i)

print sum(a)

 

[小知识]Python迭代器相关 @ Python

标签:

原文地址:http://www.cnblogs.com/zuoyuan/p/4778297.html

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