¿Por qué recibo AttributeError: el objeto 'NoneType' no tiene el atributo 'algo'?
Recibo un mensaje de error que dice
AttributeError: 'NoneType' object has no attribute 'something'
¿Cómo puedo entender este mensaje?
¿Qué escenarios generales podrían causar tal problema AttributeError
y cómo puedo identificar el problema?
Este es un caso especial del AttributeError
s. Merece un tratamiento aparte porque hay muchas maneras de obtener un None
valor inesperado del código, por lo que normalmente es un problema diferente; para otros AttributeError
correos electrónicos, el problema podría ser fácilmente el nombre del atributo.
Consulte también ¿Qué es un valor Ninguno? y ¿ Qué es un objeto 'NoneType'? para comprender None
y su tipo, NoneType
.
NingunoTipo significa que en lugar de una instancia de cualquier Clase u Objeto con el que crees que estás trabajando, en realidad tienes None
. Por lo general, eso significa que una asignación o función llamada anteriormente falló o arrojó un resultado inesperado.
Tienes una variable que es igual a Ninguna y estás intentando acceder a un atributo llamado "algo".
foo = None
foo.something = 1
o
foo = None
print(foo.something)
Ambos producirán unAttributeError: 'NoneType'
El NoneType
es el tipo de valor None
. En este caso, la variable lifetime
tiene un valor de None
.
Una forma común de que esto suceda es llamar a una función a la que le falta un archivo return
.
Sin embargo, hay infinitas otras formas de establecer una variable en Ninguno.
if val is not None:
print(val)
else:
# no need for else: really if it doesn't contain anything useful
pass
Compruebe si los datos concretos no están vacíos o son nulos.