Junior — Middle
Qual é o papel dos métodos especiais (dunder) na implementação de geradores e seu uso em Python?
sobes.tech IA
Resposta da IA
Em Python, os métodos especiais (métodos dunder), como __iter__(), __next__(), desempenham um papel fundamental na implementação de geradores e iteradores.
Os geradores são objetos que permitem iterar sobre uma sequência de valores, calculando-os conforme necessário, em vez de imediatamente.
__iter__()devolve o iterador do objeto (frequentemente o próprio objeto).__next__()devolve o próximo elemento da sequência ou levanta uma exceçãoStopIterationquando os elementos acabam.
Quando crias um gerador usando uma função com a palavra-chave yield, o Python cria automaticamente um objeto gerador com esses métodos.
Exemplo de implementação de um iterador simples usando métodos dunder:
class CountUpTo:
def __init__(self, max):
self.max = max
self.current = 0
def __iter__(self):
return self
def __next__(self):
if self.current >= self.max:
raise StopIteration
self.current += 1
return self.current
for number in CountUpTo(3):
print(number)
Assim, os métodos dunder fornecem o protocolo de iteração, que é a base dos geradores e permite usá-los em ciclos e outras construções que trabalham com objetos iteráveis.