什么使得在Python中迭代的东西

是什么让Python在Python中迭代? 即。 可以循环使用for

我有可能在Python中创build一个可迭代的类吗? 如果是这样,怎么样?

为了让一个类可迭代,写一个返回一个迭代器的__iter__()方法。 例

 class MyList(object): def __init__(self): self.list = [42, 3.1415, "Hello World!"] def __iter__(self): return iter(self.list) m = MyList() for x in m: print x 

版画

 42 3.1415 Hello World! 

这个例子使用了一个列表迭代器,但是你也可以编写自己的迭代器,方法是创build__iter__() 生成器或者返回定义next()方法的迭代器类的实例。

Python文档正是这样描述的:

需要为容器对象定义一个方法来提供迭代支持:

 container.__iter__() 

返回一个迭代器对象。 该对象需要支持下面描述的迭代器协议。 如果一个容器支持不同types的迭代,可以提供额外的方法来专门为这些迭代types请求迭代器。 (支持多种forms的迭代的对象的一个​​例子将是支持广度优先和深度优先遍历的树形结构。)该方法对应于Python / C API中用于Python对象的types结构的tp_iter槽。

迭代器对象本身需要支持以下两种方法,它们一起构成迭代器协议:

 iterator.__iter__() 

返回迭代器对象本身。 这是允许容器和迭代器与for和in语句一起使用所必需的。 此方法对应于Python / C API中Python对象的types结构的tp_iter槽。

 iterator.next() 

返回容器中的下一个项目。 如果没有其他项目,则引发StopIterationexception。 此方法对应于Python / C API中Python对象的types结构的tp_iternext插槽。

带有__iter__()方法的任何对象都被认为是可迭代的。

另外,任何序列(具有__getitem__()方法的对象)都可以返回一个迭代器。 迭代器是带有__next__()方法的对象,该方法返回序列中的下一个对象并引发StopIterationexception。

这个问题可以帮助你,它描述了如何做一个interator

你需要next()__iter__()方法。 这是一个很好的小教程 。