Sobes.tech
Junior — Middle

¿Cómo se deben implementar los métodos dentro de la propia clase para garantizar su capacidad de iteración?

sobes.tech AI

Respuesta de la IA

Para hacer que una clase sea iterable en Python, debes implementar el método __iter__, que devuelve un iterador. Un iterador es un objeto con el método __next__, que devuelve el siguiente elemento o genera una excepción StopIteration cuando no hay más elementos.

Una forma sencilla es hacer que la clase sea también un iterador, implementando ambos métodos:

class MyIterable:
    def __init__(self, data):
        self.data = data
        self.index = 0

    def __iter__(self):
        self.index = 0  # reiniciar para una nueva pasada
        return self

    def __next__(self):
        if self.index >= len(self.data):
            raise StopIteration
        value = self.data[self.index]
        self.index += 1
        return value

# Uso:
obj = MyIterable([1, 2, 3])
for item in obj:
    print(item)

Alternativamente, __iter__ puede devolver un iterador separado, por ejemplo, usando un generador:

def __iter__(self):
    for item in self.data:
        yield item

Este método es más simple y a menudo preferido.