web-dev-qa-db-ja.com

python=でこのAttributeErrorが発生するのはなぜですか?

ひとつだけ、理解できないことがあります。

なぜこれが

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'
34
Aufwind

これは、scipyモジュールにsparseという名前の属性がないために発生します。その属性は、import scipy.sparse

サブモジュールは、import scipy;それらを明示的にインポートする必要があります。パッケージは、必要に応じて独自のサブモジュールをインポートすることもできますが、ほとんどのパッケージに同じことが当てはまります。 (たとえば、scipy/__init__.pyステートメントを含むimport scipy.sparsethensparseをインポートするたびにscipyサブモジュールがインポートされます。)

49
David Z

スパースではなく、scipyをインポートしたためです。 from scipy import sparse

4
Dan

AttributeError は、オブジェクトの属性が利用できない場合に発生します。

属性参照 は、ピリオドと名前が続くプライマリです。

attributeref :: =プライマリ "。"識別子

そのオブジェクトの有効な属性のリストを返すには、 dir() を使用します。例:

dir(scipy)

だからおそらくあなたは単にする必要があります:import scipy.sparse

2
kenorb