O Protocolo de Iterador
Deslize para mostrar o menu
Em Python, o protocolo de iterador é um conjunto de métodos que permite que objetos sejam iterados, tornando-os compatíveis com estruturas como o laço for. Os dois métodos essenciais envolvidos são __iter__ e __next__. Quando você utiliza um laço for em um objeto, o Python chama internamente o método __iter__ do objeto para obter um iterador. Esse iterador deve possuir um método __next__, que retorna o próximo item da sequência a cada chamada. Quando não houver mais itens, __next__ deve lançar uma exceção StopIteration para sinalizar o fim da sequência.
1234567891011121314151617181920212223242526class SquaresIterator: # Initialize with the number of squares to generate def __init__(self, limit): self.limit = limit self.current = 0 # Return the iterator object (itself) def __iter__(self): return self # Return the next square, or stop if done def __next__(self): if self.current < self.limit: # Calculate square result = self.current ** 2 # Move to next number self.current += 1 return result # If no more items else: raise StopIteration for square in SquaresIterator(5): print(square)
__init__ - Fase de Configuração
Quando o iterador é criado, ele recebe:
-
limit→ quantidade de números a serem gerados; -
Define
current = 0→ ponto inicial; -
Prepara tudo o que é necessário para a iteração.
__iter__ - Tornando-o Iterável
- Retorna
self(o próprio objeto); - Isso é o que permite usá-lo em um loop for.
__next__ - Produzindo Valores
Este método é executado toda vez que o loop solicita o próximo item:
- Se
current<limit:- Calcular
current²; - Aumentar
currentem 1; - Retornar o resultado.
- Calcular
- Se
current≥limit:- Lançar
StopIterationpara encerrar o loop automaticamente.
- Lançar
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo