我有一个 list
自定义类对象(示例如下)。
使用: list(itertools.chain.from_iterable(myBigList))
我想“合并”所有 stations
子列表到一个大列表中。所以我想我需要让我的自定义类成为可迭代的。
这是我的自定义类的示例。
class direction(object) :
def __init__(self, id) :
self.id = id
self.__stations = list()
def __iter__(self):
self.__i = 0 # iterable current item
return iter(self.__stations)
def __next__(self):
if self.__i<len(self.__stations)-1:
self.__i += 1
return self.__stations[self.__i]
else:
raise StopIteration
我实施 __iter__
和 __next__
但它似乎不起作用。他们甚至没有被召唤。
知道我做错了什么吗?
注意:使用 Python 3.3
原文由 Matthieu Riegler 发布,翻译遵循 CC BY-SA 4.0 许可协议
__iter__
是当您尝试迭代类实例时调用的内容:__next__
is what gets called on the object which is returned from__iter__
(on python2.x, it’snext
, not__next__
–我通常将它们都命名为别名,以便代码可以与任何一个一起使用……):在评论中,有人问你将如何构造可以迭代多次的对象。在这种情况下,我建议采用与 Python 相同的方法,将迭代器从数据容器中分离出来: