一个类实现了iter()函数,则这个类是可迭代的,通常iter()函数必须返回一个
实现了next()的类的对象,当然如果自己实现了next(),也可以返回自己
同时实现了iter()和next()的对象,就是迭代器
class Student():def __init__(self,name):self.name=nameself.start=0def __iter__(self):return selfdef __next__(self):if self.start <len(self.name):result=self.name[self.start]self.start+=1return resultelse:raise StopIterations=Student("Jack Macial")for elem in s:print(elem)
执行结果如下:
JackMacial
下面查看next函数的使用
class Student():def __init__(self,name):self.name=nameself.start=0def __iter__(self):return selfdef __next__(self):if self.start <len(self.name):result=self.name[self.start]self.start+=1return resultelse:raise StopIterations=Student("Jack Macial")print(next(s))print(next(s))print(next(s))print(next(s))print(next(s))print(next(s))print(next(s))print(next(s))print(next(s))print(next(s))print(next(s))print(next(s))
执行结果如下:
JackMacialTraceback (most recent call last):File "G:/python_flask/test.py", line 29, in <module>print(next(s))File "G:/python_flask/test.py", line 15, in __next__raise StopIterationStopIteration