Qué significa AttributeError y cómo solucionarlo
Referencia del error
AttributeError
Lenguaje
Severidad
MediaCuá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.
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
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