我正在尝试创建一个可迭代的类,但是可以说,我一直在用头撞墙,得到“对象不可迭代”。这是我的代码:
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)没有效果!
您的代码存在几个问题:
__next__()(在 python 3 上保持原样)++self.i应替换为self.i += 1self.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)