Python 添字アクセスが可能なオブジェクトの作り方 __getitem__
本記事ではPythonで添字アクセスが可能なオブジェクトの作り方を紹介します。
- TL;DR
- クラスに
__getitem__
メソッドを定義するだけ
- クラスに
添字アクセスとは
ここでいう添字アクセスとは配列でおなじみの下記のようなことを指します。
Copied!!array = [1,2,3,4] array[0] # 添字アクセス
今回したいこと
今回したいことは添字可能なオブジェクトを実装することを目的にします。
-
例えばMyClassという配列型のデータを保持しているクラスがあったときに
Copied!!class MyClass: data = [0,1,2,3,4,5,6,7,8]
-
インスタンス化したオブジェクトに
Copied!!obj = MyClass()
-
添字を使ってMyClassのdataフィールドの配列にアクセスできるようにしたいです
Copied!!obj[0] # 0 obj[3] # 3 obj[5] # 5
作り方
__getitem__
メソッドを定義するだけ
example.pyCopied!!class MyClass: data = [0, 1, 2, 3, 4, 5, 6, 7, 8] def __getitem__(self, index): return self.data[index]
このMyClassは次のように使うことができます。
Copied!!>>> from example import MyClass >>> obj = MyClass() >>> obj[0] 0 >>> obj[1] 1 >>> for i in obj: ... print(i) ... 0 1 2 3 4 5 6 7 8