Подтвердить что ты не робот

Почему этот атрибут AttributeError в python происходит?

Есть одна вещь, которую я не понимаю.

Почему это

import scipy # happens with several other modules, too. I took scipy as an example now...

matrix = scipy.sparse.coo_matrix(some_params)

выполните эту ошибку:

AttributeError: 'module' object has no attribute 'sparse'
4b9b3361

Ответ 1

Это происходит потому, что модуль scipy не имеет атрибута с именем sparse. Этот атрибут определяется только тогда, когда вы import scipy.sparse.

Субмодули автоматически не импортируются, когда вы просто import scipy; вам нужно импортировать их явно. То же самое справедливо для большинства пакетов, хотя пакет может выбрать импорт собственных подмодулей, если захочет. (Например, если scipy/__init__.py включил оператор import scipy.sparse, то подмодуль sparse будет импортироваться всякий раз, когда вы импортируете scipy.)

Ответ 2

Потому что вы импортировали scipy, а не разреженные. Попробуйте from scipy import sparse?

Ответ 3

AttributeError возникает, когда атрибут объекта недоступен.

An ссылка атрибута является первичной, за которой следует период и имя:

attributeref:: = primary "." Идентификатор

Чтобы вернуть список допустимых атрибутов для этого объекта, используйте dir(), например:

dir(scipy)

Так что, вероятно, вам нужно сделать просто: import scipy.sparse

Ответ 4

По умолчанию пространство имен в Python равно "__main__". Когда вы используете import scipy, Python создает отдельное пространство имен в качестве имени вашего модуля. Правило в Pyhton: когда вы хотите вызвать атрибут из других пространств имен, вы должны использовать полное имя атрибута.