Guía de diagnóstico

AttributeError: el objeto real no tiene el atributo o método que esperabas

Antes de buscar “cómo añadir el atributo”, comprueba qué objeto tienes de verdad. Muchos AttributeError son en realidad errores sobre el origen del dato.

Revisado 2026-09-30Ejemplos y diagnóstico

Pregunta primero: ¿qué objeto tengo?

diagnostico.py
print(objeto)
print(type(objeto))

Si esperabas una lista pero recibiste None, corregir el nombre del método no resolverá la causa. Sigue el valor hacia atrás hasta la función o rama que lo produjo.

El caso “NoneType object has no attribute”

none.py
def buscar_usuario(id):
    return None

usuario = buscar_usuario(7)
print(usuario.nombre)

La línea que falla intenta usar .nombre, pero la pregunta importante es por qué buscar_usuario devolvió None y qué debería ocurrir cuando no hay usuario.

Otros dos orígenes frecuentes

Nombre de método incorrecto

Escribiste .apend() en lugar de .append() o recuerdas un método de otro tipo.

Reasignación accidental

Una variable que era objeto de una clase pasa a contener un string, número u otro valor antes del uso.

No confundir con KeyError

objeto.nombre busca un atributo; diccionario["nombre"] busca una clave. Aunque visualmente expresen “obtener un dato”, siguen mecanismos distintos y producen excepciones distintas.

Señal de que ya lo entiendesPuedes provocar este error con un ejemplo mínimo, explicar qué supuesto se rompió y elegir una corrección que conserve la intención del programa.

Referencia técnica: documentación oficial de excepciones de Python.