¿Por qué recibo AttributeError: el objeto 'NoneType' no tiene el atributo 'algo'?

Resuelto Jacob Griffin asked hace 12 años • 11 respuestas

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 AttributeErrory cómo puedo identificar el problema?


Este es un caso especial del AttributeErrors. Merece un tratamiento aparte porque hay muchas maneras de obtener un Nonevalor inesperado del código, por lo que normalmente es un problema diferente; para otros AttributeErrorcorreos 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 Noney su tipo, NoneType.

Jacob Griffin avatar Jan 21 '12 06:01 Jacob Griffin
Aceptado

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.

g.d.d.c avatar Jan 20 '2012 23:01 g.d.d.c

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'

koblas avatar Jan 20 '2012 23:01 koblas

El NoneTypees el tipo de valor None. En este caso, la variable lifetimetiene 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.

S.Lott avatar Jan 20 '2012 23:01 S.Lott
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.

Shah Vipul avatar Dec 21 '2020 12:12 Shah Vipul