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 NoneTypesupone que significa y cómo puedo reducir lo que está sucediendo?
python
attributeerror
nonetype
Jacob Griffin
fuente
fuente

printfunciones (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
Nonealgo. Un explícitofoo = Nonees poco probable que sea el problema; va a serfoo = something()y no te das cuenta de quesomething()podría volverNonecuando no tenga éxito o el conjunto de resultados esté vacío o lo que sea.Otros han explicado qué
NoneTypees 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
Nonedonde 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,mylistse modifica. Pero el valor de retorno real del método esNoney no la lista ordenada. Así que ha acaba de asignarNoneamylist. Si intenta hacer lo siguiente, digamos,mylist.append(1)Python le dará este error.fuente
El
NoneTypees el tipo del valorNone. En este caso, la variablelifetimetiene 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
lifetimetuviera 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.Nonees unaNullvariable 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 selfa 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