我正在实现本质上是一个容器对象(尽管它确实有一些自己的逻辑)。我希望能够遍历此类中的字段中的项目(这只是一个简单的列表)。我应该为我的类重新实现__iter__
和next
,还是可以返回列表的迭代器,如下所示:
class X:
def __init__(self):
self.list = []
def __iter__(self):
return self.list.__iter__()
我不确定这是否会导致任何不良行为。
答案 0 :(得分:24)
可以使用内置list
类型的迭代器。我建议不要明确地调用__iter__()
,而是使用内置函数iter()
:
def __iter__(self):
return iter(self.list)
另一种选择可能是从X
派生list
。 (在Python 2.x中,您至少应该从object
派生。)