Sigo recibiendo un error que dice
AttributeError: 'NoneType' object has no attribute 'something'
El código que tengo es demasiado largo para publicarlo aquí. ¿Qué escenarios generales causarían esto AttributeError
, qué se NoneType
supone que significa y cómo puedo reducir lo que está sucediendo?
python
attributeerror
nonetype
Jacob Griffin
fuente
fuente
print
funciones (o declaraciones según la versión) para revelar los valores reales que las variables realmente tienen en el código que tiene este problema.None
.Respuestas:
NoneType significa que, en lugar de una instancia de cualquier clase u objeto con el que creas que estás trabajando, en realidad tienes
None
. Eso generalmente significa que una asignación o función llamada arriba falló o devolvió un resultado inesperado.fuente
Tiene una variable que es igual a Ninguna y está intentando acceder a un atributo llamado 'algo'.
o
Ambos producirán un
AttributeError: 'NoneType'
fuente
None
algo. Un explícitofoo = None
es poco probable que sea el problema; va a serfoo = something()
y no te das cuenta de quesomething()
podría volverNone
cuando no tenga éxito o el conjunto de resultados esté vacío o lo que sea.Otros han explicado qué
NoneType
es y una forma común de terminar con esto (es decir, no devolver un valor de una función).Otra razón común que tiene
None
donde no lo espera es la asignación de una operación in situ en un objeto mutable. Por ejemplo:El
sort()
método de una lista ordena la lista en el lugar, es decir,mylist
se modifica. Pero el valor de retorno real del método esNone
y no la lista ordenada. Así que ha acaba de asignarNone
amylist
. Si intenta hacer lo siguiente, digamos,mylist.append(1)
Python le dará este error.fuente
El
NoneType
es el tipo del valorNone
. En este caso, la variablelifetime
tiene un valor deNone
.Una forma común de hacer que esto suceda es llamar a una función que falta a
return
.Sin embargo, hay un número infinito de otras formas de establecer una variable en Ninguno.
fuente
lifetime
tuviera un valor deNone
(pre-edición). Estaba tratando de acceder al atributo de por vida de otra cosa que eraNone
.Considere el siguiente código.
Esto te dará el error
Entonces los puntos son los siguientes.
fuente
Significa el objeto al que está intentando acceder
None
.None
es unaNull
variable en python Este tipo de error ocurre cuando su código es algo como esto.fuente
gddc tiene razón, pero agrega un ejemplo muy frecuente:
Puede llamar a esta función de forma recursiva. En ese caso, puede terminar en puntero nulo o
NoneType
. En ese caso, puede obtener este error. Entonces, antes de acceder a un atributo de ese parámetro, verifique si no lo estáNoneType
.fuente
if foo is not None:
Al construir un estimador (sklearn), si olvida regresar self en la función de ajuste, obtiene el mismo error.
Agregar
return self
a la función de ajuste corrige el error.fuente
Puede obtener este error si ha comentado HTML en una aplicación Flask. Aquí el valor de qual.date_expiry es Ninguno:
Elimina la línea o arréglala:
fuente
si asignamos algo como lo siguiente, arrojará un error como "AttributeError: el objeto 'NoneType' no tiene el atributo 'show'"
fuente