liaozd 发表于 2014-04-02 11:32

一个关于迭代器的问题

这段代码是书里看到的,不是很理解为什么__iter__()里为什么return的是self?#! /usr/bin/env python

class MyItertator(object):
    def __init__(self, step):
      self.step = step

    def next(self):
      if self.step == 0:
            raise StopIteration
      self.step -= 1
      return self.step

    def __iter__(self):
      print type(self), self
      return self

for el in MyItertator(5):
    print el

<class '__main__.MyItertator'> <__main__.MyItertator object at 0xb76e090c>
4
3
2
1
0

weishuo1999 发表于 2014-04-02 12:28

for的自定义类不就是这么规定的吗?

liaozd 发表于 2014-04-02 13:47

回复 2# weishuo1999

不是for,我是想知道class定义里面的__iter__(),为什么返回的self。


   

修杰_JIANG 发表于 2014-04-03 11:34

http://yolila.blog.163.com/blog/static/78013702201062021321741/

a-plus 发表于 2014-04-05 13:20

在Python里,__iter__方法是用来返回iterator的;对于本身就是iterator的对象,当然就返回对象本身了。

或许这个对你有帮助:
http://blog.chinaunix.net/uid-15174104-id-3988899.html
http://blog.chinaunix.net/uid-15174104-id-4172583.html
页: [1]
查看完整版本: 一个关于迭代器的问题