0. 实现一个可以迭代的对象
1)要想使一个对象实现迭代的功能,须实现__iter__和__next__方法。
2)判断classmate是否是可以迭代的对象:
from collections import Iterable
isinstance(classmate, Iterable)
结果为True则说明是可以迭代的对象,结果为False则说明不是可迭代的对象。
3)判断classmate_iterator是否是迭代器:
from collections import Iterator
classmate_iterator = iter(classmate)
isinstance(classmate_iterator, Iterator)
结果为True则说明是迭代器,结果为False则说明不是迭代器。
4)整体代码如下:
import time
# from collections import Iterable
# from collections import Iterator
class Classmate(object):
def __init__(self):
self.names = list()
self.current_num = 0
def __iter__(self):
"""如果想要一个对象称为一个 可以迭代的对象,即可以使用for,那么必须实现__iter__方法"""
return self # 调用iter(xxobj)的时候 只要__iter__方法返回一个 迭代器即可,至于是自己 还是 别的对象都可以的, 但是要保证是一个迭代器(即实现了 __iter__ __next__方法)
def __next__(self):
if self.current_num < len(self.names):
ret = self.names[self.current_num]
self.current_num += 1
return ret
else:
raise StopIteration
def add(self, name):
self.names.append(name)
classmate = Classmate()
classmate.add("老王")
classmate.add("王二")
classmate.add("张三")
# print("判断classmate是否是可以迭代的对象:", isinstance(classmate, Iterable))
# classmate_iterator = iter(classmate)
# print("判断classmate_iterator是否是迭代器:", isinstance(classmate_iterator, Iterator))
for name in classmate:
print(name)
time.sleep(1)
运行结果:
老王
王二
张三