PythonPOOintermediario

Iterator protocol

Toda vez que você usa um loop for em Python, o interpretador chama __iter__ e __next__ por baixo dos panos. Implementar esses métodos manualmente permite criar objetos que iteram de forma personalizada, como geradores sem usar yield. Dominar o protocolo iterador é útil para trabalhar com streams de dados, leitura de arquivos linha a linha ou qualquer sequência que só pode ser percorrida uma vez.

O PROBLEMA

Contagem com __iter__ e __next__ para contar de start a end.

SOBRE O CONCEITO

O protocolo iterador exige que a classe implemente __iter__ (retornando o próprio objeto iterador) e __next__ (que retorna o próximo valor ou levanta StopIteration quando acaba). No exercício, Contagem deve guardar o estado atual e o limite. O erro comum de esquecer StopIteration faz com que o for nunca pare — ele continuará chamando __next__ e, sem o raise, o Python retornará None ou lançará um AttributeError. Por isso, dentro de __next__, você precisa verificar se atingiu o fim e usar raise StopIteration para sinalizar o término da iteração.

RESOLUÇÃO

Mais exercícios de POO

PYPOI2I · IntermediárioHerança simplesPYPOI1I · IntermediárioProperty e setterPYPOI5I · IntermediárioClasse abstrataPYPOO7B · BásicoMétodo estático
Ver todos os exercícios de Python