【发布时间】:2020-02-25 15:26:36
【问题描述】:
我有一个名为 ObjectSet 的类,我希望它是可迭代的。它会在 for 循环后重置我的“指针”,但如果我打破循环则不会。
我的类 ObjectSet 具有附加代码中定义的方法。我遍历一个对象集,当我找到一个特定对象时,我打破了循环,但我不知道在这种情况下如何以一种好的方式重置指针。
class ObjectSet:
def __init__(self,objects = None):
if not objects: self.objects = []
else: self.objects = objects
self.pointer = 0
def __iter__(self):
return self
def __len__(self):
return len(self.objects)
def __next__(self):
cur_pointer = self.pointer
if cur_pointer >= len(self):
self.pointer = 0
raise StopIteration
self.pointer += 1
return self.objects[cur_pointer]
objs = ObjectSet([1,2,3])
for obj in objs:
if obj == 2:
break
for obj in objs:
print(obj)
代码只打印 3,但我希望它打印 1、2 和 3,就像它处理列表一样。
【问题讨论】:
-
建议的重复stackoverflow.com/questions/21665485/… 的答案正是这个问题中提供的代码......
-
感谢您指出重复,我错过了。
-
我不是要告诉你有重复的;恰恰相反。有人用上面的链接作为重复的链接结束了你的问题。我重新打开它是因为 answer 存在您的 question (并且不适用于您的情况)。