パイソン特殊メソッド __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
