python - error - nonetype object has no attribute
Python: Error de atributo: el objeto ''NoneType'' no tiene ningĂșn atributo ''algo'' (5)
Sigo recibiendo un error que dice
AttributeError: ''NoneType'' object has no attribute ''something''
El código que tengo es demasiado largo para publicarlo aquí, pero me preguntaba si alguien podría dar una idea de qué escenarios generales podrían causar este ''Error de ''AttributeError''
, y ¿ qué se supone que significa ''Ninguno tipo'' ?
Por lo general, recibiría el nombre de algún objeto en el que el código salió mal, pero dado que me da ''NoneType''
no estoy seguro de cómo es posible reducir lo que está pasando, aparte del número de línea.
Considere el siguiente código.
def return_something(someint):
if someint > 5:
return someint
y = return_something(2)
y.real()
Esto te va a dar el error.
AttributeError: el objeto ''NoneType'' no tiene atributo ''real''
Así que los puntos son los siguientes.
- En el código, una función o método de clase no devuelve nada o devuelve Ninguno
- A continuación, intenta acceder a un atributo de ese objeto devuelto (que es Ninguno), lo que provoca el mensaje de error.
El NoneType
es el tipo del valor None
. En este caso, la lifetime
la variable tiene un valor de None
.
Una forma común de que esto suceda es llamar a una función que no return
.
Sin embargo, hay un número infinito de otras formas de establecer una variable en Ninguno.
NoneType significa que en lugar de una instancia de cualquier clase u objeto con el que crea que está trabajando, realmente no tiene None
. Por lo general, eso significa que una asignación o una función arriba llamada falló o devolvió un resultado inesperado.
Otros han explicado qué es NoneType
y una forma común de terminar con él (es decir, no devolver un valor de una función).
Otra razón común por la que tiene None
es que no espera que sea la asignación de una operación in situ a un objeto mutable. Por ejemplo:
mylist = mylist.sort()
El método sort()
de una lista ordena la lista en el lugar, es decir, se modifica mylist
. Pero el valor de retorno real del método es None
y no la lista ordenada. Así que no has asignado None
a mylist
. Si luego intenta hacerlo, por ejemplo, mylist.append(1)
Python le dará este error.
Tiene una variable que es igual a Ninguna y está intentando acceder a un atributo llamado "algo".
foo = None
foo.something = 1
o
foo = None
print foo.something
Ambos producirán un AttributeError: ''NoneType''