zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    2019年8月20日 item系列
    变量和字符
    python命名规则
    五大常用算法之贪心算法
    过河卒
    组成三位数
    编码问题
    FatMouse' Trade
    A Boring Game
    螺旋矩阵
  • 原文地址:https://www.cnblogs.com/shunguo/p/14534272.html
Copyright © 2011-2022 走看看