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

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

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

今日の進捗

  • Language Reference: Data model
  • Python.use(better) -- セミナー研修テキスト
  • 連結リスト課題を「続・ひよ子のきもち」で公開
Comment
本人:野中 連結リストを自分で作成してみるとやっぱり組み込みのlistってよくできてると思いました。
担当:伊藤/本間 。(^^)

添字付け:メソッド __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 "%d: %s"%(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