Skip to main content

Python: 対処法→TypeError: 'module' object is not callable

· 2 min read
Yu Sasaki
Enterprise Security Manager / Advisor

最近久々にBitcoin取引所のWeb APIをCallするPythonスクリプトのテストをしている際に、首題のエラーのエラーが発生した為、備忘録として簡単に纏めておく。

事象

他ファイルに記載したクラスのインスタンスを作成する際に首題のエラーが発生。

↓ import文
import CryptoAccount



↓エラーログ
Traceback (most recent call last):
<中略>
File "/Users/XXXXXXX/PycharmProjects/PyQuoine/Quoine.py", line 49, in getAccounts
cyac = CryptoAccount(i)
TypeError: 'module' object is not callable

このケースだとCryptoAccountクラスが他モジュールファイル(CryptoAccount.py)で定義されているクラス。

原因

Pythonの規則が分かっていれば一目瞭然ではあるが、このimport文から対象クラスのインスタンス作成する文は下記の通りとなる。

ca = CryptoAccount.CryptoAccount(i)

「import CryptoAccount」だとCryptoAccountモジュールだけがシンボルテーブルに入り、内部のCryptoAccountへのアクセスはモジュール名経由でアクセスする必要がある。 詳細は下記の公式ドキュメントを参照されたし。

雑感

主題と話はずれるが、久々にオブジェクト指向のプログラミングするとデザインパターンを思い出しながらのコーディングになるので、スピードが遅くなる。趣味スクリプトなので多少のんびりと復習しながら進める予定。