Pythonにはたくさんの特殊メソッドがあります。以前も__repr__
と__str__
の違いや挙動について書きましたが、今回は__getitem__
について学習したので、コード例とともに簡単な使い方を紹介したいと思います。各メソッドの特徴を捉えるには自身で手を動かすことが一番だと思いますので、コード例を参考に色々と試行錯誤してみて頂ければと思います。Pythonの特殊メソッド、__getitem__
は、dict型でデータにアクセスするときに「キー-バリュー」でアクセスするようなアクセス方法を、自作クラスでも実装できるようにするものです。
コード例と実行時の挙動をみて、確認してみます。
import datetime
class Test(object):
def __getitem__(self, x):
the_hour = datetime.datetime.now().hour
if x == "greeting":
if 0 <= the_hour < 6:
return "Don't to speak to me"
elif 6 <= the_hour < 10:
return "Goodmorning"
elif 10 <= the_hour < 13:
return "Goodnoon"
elif 13 <= the_hour < 17:
return "Goodafternoon"
else:
return "Goodevening"
elif x == "sit":
return "down"
elif x == "stand":
return "up"
else:
return "What?"
test = Test()
print("greeting: "+test["greeting"])
print("sit: "+test["sit"])
print("stand: "+test["stand"])
print(" : "+test[""])
上記は簡単なクラスで、クラスメソッドとして、今回の主題である__getitem__
メソッドを使っています。時間やキーの指定によって、返ってくる値が変わるようにしています。
greeting: Goodafternoon sit: down stand: up : What?
このコード例から__getitem__
が辞書型のようなアクセスを可能とさせるものであることがわかります。非常に簡単なコードですが、__getitem__
メソッドの使い方を掴みやすいかと思います。公式ドキュメントを主に参考にしましたので、より詳しく知りたい場合は参照下さい。
どなたかの参考になれば幸いです。読んで頂き、ありがとうございました。