sumar - restar tiempo python
¿Por qué ocurre este AttributeError en Python? (4)
Hay una cosa, que no entiendo.
Por qué esto
import scipy # happens with several other modules, too. I took scipy as an example now...
matrix = scipy.sparse.coo_matrix(some_params)
producir este error:
AttributeError: ''module'' object has no attribute ''sparse''
El espacio de nombres predeterminado en Python es "__main__"
. Cuando utiliza import scipy
, Python crea un espacio de nombre separado como nombre de su módulo. La regla en Pyhton es: cuando desea llamar a un atributo de otros espacios de nombres, debe usar el nombre de atributo completamente calificado.
Esto sucede porque el módulo scipy
no tiene ningún atributo llamado sparse
. Ese atributo solo se define al import scipy.sparse
.
Los submódulos no se importan automáticamente cuando solo import scipy
; necesita importarlos explícitamente. Lo mismo se aplica a la mayoría de los paquetes, aunque un paquete puede elegir importar sus propios submódulos si así lo desea. (Por ejemplo, si scipy/__init__.py
incluye una instrucción import scipy.sparse
, entonces el submódulo sparse
se importaría siempre que importes scipy
).
Porque importó scipy, no escaso. ¿Intentar from scipy import sparse
?
AttributeError se genera cuando el atributo del objeto no está disponible.
Una referencia de atributo es una primaria seguida de un punto y un nombre:
attributeref :: = primary "." identificador
Para devolver una lista de atributos válidos para ese objeto, use dir()
, por ejemplo:
dir(scipy)
Por lo tanto, probablemente deba hacerlo simplemente: import scipy.sparse