こんにちはPyQチームです。
今回はTypeError: 'list' object is not callable
というエラーの意味と考えられる原因を紹介します。
- 「TypeError: 'list' object is not callable」というエラーのお悩み
- 回答
- 'list' object is not callableの解説
- 類似エラーの紹介
- その他のTypeError
「TypeError: 'list' object is not callable」というエラーのお悩み
リストに入っている数字を取り出そうとしましたが、
TypeError: 'list' object is not callable
というエラーが出てしまい取り出せません。このエラーはどんなエラーなのでしょうか?
入力した内容(コード)
# リストnumbers作成 numbers = [100, 200, 300, 400, 500] # 先頭の要素の表示 numbers(0)
出たエラー(実行結果)
Traceback (most recent call last): File "1.py", line 5, in <module> numbers(0) TypeError: 'list' object is not callable
回答
リストを関数として呼び出したので、エラーになりました。
'list' object is not callableの解説
呼び出し可能(callable)ではないオブジェクトに対し、呼び出しをするとTypeErrorになります。
呼び出し可能オブジェクトとは、関数やメソッドなどのように()
を付けて呼び出すことができるオブジェクトのことです。
numbersはリスト型であり、リスト型は呼び出し可能オブジェクトではありません。
リストの要素を取得するには()
ではなく[]
を使います。
numbersの先頭の要素を取得する方法は、numbers(0)
ではなくnumbers[0]
です。
'list' object is not callableが出る時にチェックするといい、よくあるミス
- 呼び出しできないオブジェクトを呼び出そうとしていないか
- 使用する記号は間違っていないか。
- リストの値を参照するつもりで
()
を使うと、リストを関数として呼び出したことになってしまい、エラーが出ます。
- リストの値を参照するつもりで
- 誤った型の引数が指定されていないか
類似エラーの紹介
TypeError: 'str' object is not callable
文字列を関数として使おうとしているときにこのエラーが表示されます。
>>> a = "ABC" >>> a() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object is not callable
TypeError: 'module' object is not callable
モジュールの利用方法に問題がある場合にエラーが表示されます。
以下の場合は、 from datetime import datetime
と書くかdatetime.datetime(2021,1,1)
と書く必要があります。
>>> import datetime >>> datetime(2021,1,1) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'module' object is not callable
その他のTypeError
TypeError: list indices must be integers or slices, not str
インデックス( []
)に文字列が入っている時にこのエラーが表示されます。
TypeError: 'int' object is not iterable
繰り返し(for文)に使えないオブジェクトを繰り返し処理で使っているときに発生するエラーです。 for文のinの中に繰り返すことのできない値を入れると表示されます。
TypeError: must be str, not int
文字列と数値を結合しようとするときに発生するエラーです。
TypeError: can only concatenate tuple (not "int") to tuple
タプルと数値を結合したことが原因で表示されるエラーです。