首页 > 编程语言 > 详细

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

时间:2021-03-15 00:14:58      阅读:24      评论:0      收藏:0      [点我收藏+]

创建一个可迭代对象

#迭代器
#创建一个可以迭代的对象
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)

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

原文:https://www.cnblogs.com/shunguo/p/14534272.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!