《23》添字付け:メソッド __getitem__〈Python 3.0 版〉

実録:はじめてのプログラミング記事一覧
《23》添字付け:メソッド __getitem__

《著》小粒ちゃん+α《監修》小泉ひよ子とタマゴ倶楽部
第3版♪2009/02/28 ● 2009年2月13日(金)

添字付け:メソッド __getitem__

組み込み型 list と同様に、添字を利用して各要素を参照できると便利です。そこで、

def ex():
    s = myList("ABC")
    print s,"\t#",s.__class__.__name__
    for e in s:                  # case1
        print(e)
    for i,e in enumerate(s):     # case2
        print("{0:d}: {1}".format(i, s[i]))

>>> ex()
['A', 'B', 'C'] 	# myList
A
B
C
0: A
1: B
2: C

各要素を参照するには、添字(整数)が必要です。そのため(case1)単純な for 文と違って(case2)組み込み関数 enumerate を利用するなど、冗長な表現になります。

class myList(object):
    ...
    def __getitem__(self, key):
        for i,e in enumerate(self):
            if i==key: return e

メソッド __getitem__ は、演算子 [] に呼応して、添字を利用してシーケンス内の要素を得る手段を提供します。for に続く制御変数 i が、指定した引数 key と同じ値になるとき、その要素 e をリターン値にします。

Tips

Last updated♪09/03/12