我正在尝试创建一个可迭代的类,但是我一直在墙上撞到我的头,所以说,“对象不可迭代”。这是我的代码:
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)
怎么了?我也试过next(self)
代替__next__(self)
无效!
答案 0 :(得分:4)
您的代码存在一些问题:
__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)
打印:
1
2
3
4
5
答案 1 :(得分:2)
如果您刚刚复制了代码,则应该是因为缩进不良。将__iter__
和__next__
拉为与__init__
相同的缩进。