pythonのコードを久しぶりに書いたら、しょうもないミスをしたので、メモしておきます。
pythonのリストはfiles=[]
のように書くことができ、
files=["ms1.txt","ms2.txt","ms3.txt"]
for i in range(0,3):
print(files[i])
という風に書けば、
ms1.txt
ms2.txt
ms3.txt
と出力されます。こう見ると、とても簡単なのですが、久しぶりにコードを書いた自分は
files=["ms1.txt","ms2.txt","ms3.txt"]
for i in range(0,3):
print(files(i))
と書いてしまいました。2つの違いはprint
文の中のfiles[]
とfiles()
で、括弧が違います。
リストの要素番号をfiles()
と指定すると、以下のようなエラーが返ってきます。
print(files(i))
TypeError: 'list' object is not callable
最初、なんでこんなエラー文が返ってくるかわからなかったのですが、調べてみたら
list()
は引数にiterableなオブジェクト(タプルや文字列)を指定するとリストに変換されます。
リスト型の使い方
とのこと、いわれてみたら確かにstr()
やint()
などと同じような関数ですね...今回は、整数を引数に指定したためにこのエラーが出てしまいました。
追記
コメントで指摘してもらいましたが、エラー文はこれが原因ではないみたいです。どうも、こういう風に書くと、関数として認識されるところまではあっているみたいですが、pythonはcallメソッドにより関数を定義されていないかどうかを判断するみたいです...classやメソッドは使ったことがないのでよくわからないので、間違ったことを言っているかもしれません