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.
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ómo solucionarlo
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.
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"))Errores relacionados
¿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