Blow Up by Black Swan

Python ー特殊メソッド: __getitem__

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__メソッドの使い方を掴みやすいかと思います。公式ドキュメントを主に参考にしましたので、より詳しく知りたい場合は参照下さい。

どなたかの参考になれば幸いです。読んで頂き、ありがとうございました。