logo

パイソン特殊メソッド __getitem__ 📂プログラミング

パイソン特殊メソッド __getitem__

要約

__getitem__はオブジェクトをインデックス付けできるようにするメソッドだ。

説明

__getitem__はPythonの特殊メソッドの一つで、クラスのインスタンスがリストや辞書のように角括弧 [] を用いて特定の要素にアクセスできるようにする。

通常、リストや辞書で obj[key]obj[index] の形で値を取り出すとき、Pythonの内部では当該オブジェクトの obj.__getitem__(key) が呼び出される。したがって、ユーザが定義したカスタムクラスでもこのメソッドを実装すれば、Pythonの組み込みシーケンス型と同様の方式で直感的にデータへアクセスできるようになる。

コード

class CustomData:
    def __init__(self, data):
        self.data = data
        
    def __getitem__(self, index):
        print(f"인덱스 {index}에 접근했습니다.")
        return self.data[index]

# 객체 생성
>>> a = CustomData([10, 20, 30, 40, 50])

# 단일 인덱싱
>>> a[2]
인덱스 2에 접근했습니다.
30

# 슬라이싱
>>> a[1:4]
인덱스 slice(1, 4, None)에 접근했습니다.
[20, 30, 40]

上のコードにあるように、a[2] を呼び出すと内部的に a.__getitem__(2) が実行され、事前に定義した出力とともに値を返す。a[1:4] のようにスライスを使う場合にも __getitem__ が呼び出され、このとき引数として整数ではなく slice オブジェクトが渡される。

環境

  • Windows 11
  • Python 3.10.11