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

18 python iterator

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

class X:

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

    def __iter__(self):
        return self.list.__iter__()
Run Code Online (Sandbox Code Playgroud)

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

Sve*_*ach 24

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

def __iter__(self):
    return iter(self.list)
Run Code Online (Sandbox Code Playgroud)

另一个选择可能是派生Xlist.(在Python 2.x中,你至少应该派生自object.)