zoukankan      html  css  js  c++  java
  • pyhton的可迭代与可迭代对象

    class B(object):
        def __next__(self):
            raise StopIteration
    
    class A(object):
        def __iter__(self):
            return B()
    
    
    from collections.abc import *
    
    a = A()
    b = B()
    print(isinstance(a, Iterable))
    print(isinstance(a, Iterator))
    
    print(isinstance(b, Iterable))
    print(isinstance(b, Iterator))
    

    结果是:

    True
    False
    False
    False
    

    总结:

    只要实现了__iter__的对象就是可迭代对象(Iterable),正常情况下,应该返回一个实现了__next__的对象(虽然这个要求不强制),如果自己实现了__next__,当然也可以返回自己
    同时实现了__iter__和__next__的是迭代器(Iterator),当然也是一个可迭代对象了,其中__next__应该在迭代完成后,抛出一个StopIteration异常

    作者:Liburro
    链接:https://www.jianshu.com/p/1b0686bc166d
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
  • 原文地址:https://www.cnblogs.com/scientist/p/11847518.html
Copyright © 2011-2022 走看看