HOWTO · Python

Arreglar AttributeError: el objeto 'generador' no tiene atributo 'siguiente' en Python

Este tutorial le enseñará a corregir AttributeError: el objeto generador no tiene ningún atributo a continuación en Python.

Los atributos son valores relacionados con un objeto o una clase. El AttributeError se genera en Python cuando llama a un atributo de un objeto cuyo tipo no es compatible con el método.

Por ejemplo, usar el método split() en un objeto int devuelve un AttributeError porque los objetos int no admiten el método split().

En Python 3, no hay un método .next adjunto al iterador. Como resultado, obtendrá un AttributeError cuando intente utilizar el método .next en el objeto generador.

Este tutorial le enseñará a corregir el AttributeError: el objeto 'generator' no tiene atributo 'next' en Python.

Solucione el error AttributeError: el objeto 'generador' no tiene atributo 'siguiente' en Python

Aquí hay un ejemplo de AttributeError al usar la declaración yield en Python 3.

def get_data(n):
    for i in range(n):
        yield i


a = get_data(20)
for i in range(10):
    print(a.next())

Producción :

Traceback (most recent call last):
  File "c:\Users\rhntm\myscript.py", line 6, in <module>
    print(a.next())
AttributeError: 'generator' object has no attribute 'next'

Como puede ver, hay un AttributeError en la línea 6 que contiene el código print(seq.next()). Es porque hemos usado el método .next para obtener el siguiente elemento del iterador.

El método .next se reemplaza por la función integrada next() en Python 3. Puede corregir este error utilizando la función next, como se muestra a continuación.

def get_data(n):
    for i in range(n):
        yield i


a = get_data(20)
for i in range(10):
    print(next(a))

Producción :

0
1
2
3
4
5
6
7
8
9

En Python 2, puede usar el método .next, pero Python 3 lanza una excepción, AttributeError.

Ahora ya sabes cómo solucionar el error el objeto 'generador' no tiene atributo 'siguiente' en Python. Esperamos que encuentre útil esta solución.