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)
  • 相关阅读:
    vim 末行模式简单练习
    末行模式
    vim 简单用法
    sed用法
    在原有的基础之上,启用NAT模型
    启用隔离模型
    一个前端的自我修养
    如何提升我的HTML&CSS技术,编写有结构的代码
    MVC缓存
    MVC分页
  • 原文地址:https://www.cnblogs.com/shunguo/p/14534272.html
Copyright © 2011-2022 走看看