【发布时间】:2014-03-07 02:13:01
【问题描述】:
我有一个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
【问题讨论】:
-
你在继承
list吗? -
不,List 只是我班级的成员。
-
这是实际的缩进吗?
__iter__和__next__在您的类定义之外。 -
修复缩进后它对我有用:
list(chain.from_iterable([direction(10), direction(20)])),返回[] -
@jonrsharpe 抱歉复制/粘贴错误。我的缩进很好。
标签: python list python-3.x iterable