我正在实现本质上是一个容器对象的东西(尽管它确实有一些自己的逻辑)。我希望能够迭代这个类的字段中的项(这只是一个普通的列表)。我是否应该为我的类重新实现__iter__
和next
,或者返回列表的迭代器是可以接受的,如下所示:
class X:
def __init__(self):
self.list = []
def __iter__(self):
return self.list.__iter__()
我有点不确定这是否会导致任何不受欢迎的行为。
发布于 2012-02-26 05:04:50
可以使用内置list
类型的迭代器。不过,我建议不要显式调用__iter__()
,而要使用内置函数iter()
def __iter__(self):
return iter(self.list)
另一种选择可能是从list
派生X
。(在Python2.x中,您至少应该从object
派生。)
https://stackoverflow.com/questions/9448025
复制相似问题