Pythonで開発を始めたばかりの私は、コンソールに表示されるこのエラーメッセージを何度も目にしましたが、何を意味しているのか完全には理解できません。
どなたか一般的な方法で、どのような操作でこのエラーが出るのか教えてください。
このエラーは、callableではないオブジェクトを()
で呼び出そうとすると発生します。
callableなオブジェクトとは、関数やクラス(__call__
メソッドを実装しているもの)のことです。Python Docs]2によると。
object.call(self[, args...]):インスタンスが関数として "呼ばれる "ときに呼び出される
例えば、以下のようになります。
x = 1
print x()
x` は呼び出し可能なオブジェクトではありませんが、あたかもそれがあるかのように呼び出そうとしています。この例ではエラーが発生します。
TypeError: 'int' object is not callable
呼び出し可能な**オブジェクトとは何かをよりよく理解するためには、別のSO投稿のこの回答を読んでください。
関数ではないオブジェクトを ()
のように呼び出そうとすると、このような動作になります。例えば、これはエラーを発生させます。
>>> a = 5
>>> a()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
クラスのインスタンスも、メソッド __call__
を定義していれば呼び出すことができます。
このエラーの原因となるよくある間違いは、リストや辞書の要素を検索しようとして、角括弧の代わりに括弧を使ってしまうことです。