Какой был бы хороший способ вернуть что-то из итератора в последний раз, когда он исчерпан. Я использую флаг, но это довольно некрасиво:
class Example():
def __iter__(self):
self.lst = [1,2,3]
self.stop = False # <-- ugly
return self
def next(self):
if self.stop: # <-- ugly
raise StopIteration
if len(self.lst) == 0:
self.stop = True
return "one last time"
return self.lst.pop()
Справочная информация: я извлекаю неизвестное количество строк из внешнего источника и отправляю их далее вызывающей стороне. Когда процесс закончен, я хочу выдать строку «x records обработано». У меня нет контроля над вызывающим кодом, поэтому это должно быть сделано внутри моего итератора.