我正在实现本质上是一个容器对象(尽管它确实有一些自己的逻辑).我希望能够遍历此类中的字段中的项目(这只是一个简单的列表).我应该重新实现__iter__和next我的课还是可以接受的返回列表的迭代器,像这样:
class X:
def __init__(self):
self.list = []
def __iter__(self):
return self.list.__iter__()
Run Code Online (Sandbox Code Playgroud)
我不确定这是否会导致任何不良行为.
Sve*_*ach 24
可以使用内置list类型的迭代器.我建议不要__iter__()明确调用,而是使用内置函数iter():
def __iter__(self):
return iter(self.list)
Run Code Online (Sandbox Code Playgroud)
另一个选择可能是派生X自list.(在Python 2.x中,你至少应该派生自object.)