Lingua-e
← Errores
Python

Qué significa AttributeError y cómo solucionarlo

Referencia del error

AttributeError

Lenguaje

Python

Severidad

Media

Cuándo ocurre

Un AttributeError se lanza en Python cuando intentas acceder o llamar a un atributo (una propiedad o método) que no existe en un objeto.

Posibles soluciones

Usa hasattr(obj, 'attr') o getattr(obj, 'attr', default) para verificar de forma segura. Asegúrate de que todos los atributos estén inicializados en __init__. Si la variable podría ser None, agrega una verificación de None antes de acceder a cualquier atributo.

Errores relacionados

Más detalles

Un AttributeError se lanza en Python cuando intentas acceder o llamar a un atributo (una propiedad o método) que no existe en un objeto. Generalmente significa que el objeto no es del tipo esperado, o que el atributo nunca fue definido.

Por qué ocurre

  • Acceder a un atributo que nunca fue definido en __init__ o en el cuerpo de la clase.
  • Llamar a un método que no existe en ese tipo particular (por ejemplo .sort() sobre una tupla).
  • Una variable contiene None en lugar del objeto esperado.
  • Error tipográfico en el nombre del atributo.

Posibles soluciones

Usa hasattr(obj, 'attr') o getattr(obj, 'attr', default) para verificar de forma segura. Asegúrate de que todos los atributos estén inicializados en __init__. Si la variable podría ser None, agrega una verificación de None antes de acceder a cualquier atributo.

Ejemplos

Python

Código que causa el error

class User:
    def __init__(self, name):
        self.name = name

user = User("Alice")
print(user.email)

Error en la terminal

Traceback (most recent call last):
  File "app.py", line 6, in <module>
    print(user.email)
AttributeError: 'User' object has no attribute 'email'

Código corregido

class User:
    def __init__(self, name, email=None):
        self.name = name
        self.email = email

user = User("Alice", email="alice@example.com")
print(user.email)  # alice@example.com

# Or check first:
print(getattr(user, "email", "not set"))

Practica en inglés

¿Cómo le explicarías un AttributeError a un compañero dev? Elige la frase correcta:

"I hit an error...

¿Listo para practicar tu inglés en el trabajo?

Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.

Prueba Lingua-e gratis