Python - 实现__iter__或返回列表的__iter__

时间:2012-02-25 21:01:39

标签: python iterator

我正在实现本质上是一个容器对象(尽管它确实有一些自己的逻辑)。我希望能够遍历此类中的字段中的项目(这只是一个简单的列表)。我应该为我的类重新实现__iter__next,还是可以返回列表的迭代器,如下所示:

class X:

    def __init__(self):
       self.list = []

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

我不确定这是否会导致任何不良行为。

1 个答案:

答案 0 :(得分:24)

可以使用内置list类型的迭代器。我建议不要明确地调用__iter__(),而是使用内置函数iter()

def __iter__(self):
    return iter(self.list)

另一种选择可能是从X派生list。 (在Python 2.x中,您至少应该从object派生。)