我的可迭代的 python 实现上出现“对象不可迭代”错误

Tar*_*rik 0 python iterable

我正在尝试创建一个可迭代的类,但是可以说,我一直在用头撞墙,得到“对象不可迭代”。这是我的代码:

class myiterable:
    def __init__(self, somelist):
        self.i = 0
        self.l = somelist

    def __iter__(self):
        return self

    def __next__(self):
        if self.i < len(self.l):
            self.i = self.i + 1
            return self.l[self.i-1]
        else:
            raise StopIteration



for i in myiterable([1, 2, 3, 4, 5]):
    print(i)
Run Code Online (Sandbox Code Playgroud)

怎么了?我也尝试next(self)__next__(self)没有效果!

ale*_*cxe 5

您的代码存在几个问题:

  • 缩进
  • 如果你在 python 2 上,你应该定义next()方法而不是__next__()(在 python 3 上保持原样)
  • ++self.i应替换为self.i += 1
  • self.l[i-1]应替换为self.l[self.i-1]

class myiterable:
    def __init__(self, somelist):
        self.i = 0
        self.l = somelist

    def __iter__(self):
        return self

    def next(self):
        if self.i < len(self.l):
            self.i += 1
            return self.l[self.i-1]
        else:
            raise StopIteration


for i in myiterable([1, 2, 3, 4, 5]):
    print(i)
Run Code Online (Sandbox Code Playgroud)

印刷:

1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)

  • Python 3 使用 `.__next__()`,**而不是** `.next()`。 (3认同)