方法一
使用__iter__返回一个迭代器对象
class A:
def __init__(self):
self.data = [1,2,3,4,5]
self.count = 0
def __iter__(self):
return iter(self.data)
s = A()
for i in s:
print(i)
方法二
使用__iter__返回一个生成器
class A:
def __init__(self):
self.data = [1,2,3,4,5]
self.count = 0
def __iter__(self):
for i in range(10):
yield i
s = A()
for i in s:
print(i)
方法三
使用__next__方法实现迭代
class A:
def __init__(self):
self.data = [1,2,3,4,5]
self.count = 0
def __iter__(self):
return self
def __next__(self):
if self.count > 4:
raise StopIteration
data = self.data[self.count]
self.count += 1
return data
s = A()
f = iter(s)
for i in f:
print(i)
方法四
使用__getitem__方法实现迭代
class A:
def __init__(self):
self.data = [1,2,3,4,5]
self.count = 0
def __getitem__(self, item):
if item < 4:
return item + 10
raise IndexError()
s = A()
for i in s:
print(i)
方法五
使用iter()两个参数生成迭代器
class A:
def __init__(self):
self.data = [1,2,3,4,5]
self.count = 0
def __call__(self):
if self.count < 5:
data = self.data[self.count]
self.count += 1
return data
raise StopIteration()
s = A()
for i in iter(s,None):
print(i)