python——协程(gevent)迭代器生成器(yield)

创建一个可迭代对象

#迭代器
#创建一个可以迭代的对象
from collections import Iterable
class MyClass(object):
    def __init__(self):
        self.names = list()
    def add(self, name):
        self.names.append(name)
    #添加这个方法就可以将创建的类变成可以迭代的对象
    def __iter__(self):
        return ClassmateIterable(self)#必须返回一个对象的引用

class ClassmateIterable(object):
    def __init__(self,obj):
        self.obj = obj
        self.current = 0
    def __iter__(self):
        pass
    def __next__(self):#每一次执行for循环都会调用这个next方法
        if (self.current < len(self.obj.names)):
            res = self.obj.names[self.current]
            self.current=self.current+1
            return res
        else:#抛出一个异常
            raise StopAsyncIteration

classmate = MyClass()
classmate.add("shun")
classmate.add("shun2")
print(isinstance(classmate,Iterable))#判断是否是可以迭代的,返回为true就是迭代的
for i in classmate:
    print(i)
原文地址:https://www.cnblogs.com/shunguo/p/14534272.html