《42》添字付け:メソッド __setitem__〈Python 2.x 版〉
実録:はじめてのプログラミング《記事一覧》
《42》添字付け:メソッド __setitem__
《著》小粒ちゃん+α《監修》小泉ひよ子とタマゴ倶楽部
2009年3月12日(木)
今日の進捗
- The Python Standard Library: Mapping Types — dict
- Python.use(better) -- セミナー研修テキスト
- 連想リスト課題を「続・ひよ子のきもち」で公開
Comment | |
---|---|
本人:野中 | 残りあと一週間ですがメタプログラミングについてもマスターしたいです。 |
担当:伊藤/本間 | 。(^^) |
添字付け:メソッド __setitem__
組み込み型 dict と同様に、添字を利用して各要素を設定できると便利です。すると、
def ex(): m = myDict() ; print m,"\t#",m.__class__.__name__ for e in "ABC": m[e] = ord(e) ; print m >>> ex() {} # myDict {'A': 65} {'A': 65, 'B': 66} {'A': 65, 'B': 66, 'C': 67}
演算子 [] および = を組み合わせて、各要素を再設定できます。
class myDict(object): ... def __setitem__(self, key, value): for i,(k,v) in enumerate(self._items()): if k==key: self._values[i] = value break else: self._keys .append(key) self._values.append(value)
メソッド __setitem__ は、演算子 [] および = に呼応して、添字を利用して要素対を設定する手段を提供します。局所変数 k が、指定した引数 key と同じ値になるとき、対応する値要素 self._values[i] を引数 value と同じ値に再設定します。同じキー要素が存在しないときには、新たな要素対 key/value を追加します。また、次のことから、
>>> m = myDict((e,ord(e)) for e in "ABC"); m {'A': 65, 'B': 66, 'C': 67} >>> m["C"] = 3; m {'A': 65, 'B': 66, 'C': 3} >>> m = myDict((e,ord(e)) for e in "ABC"); m {'A': 65, 'B': 66, 'C': 67} >>> m.__setitem__("C",3); m {'A': 65, 'B': 66, 'C': 3}
メソッド __setitem__ が、演算子 [] と同等の表現になるのが分かります。
Tips
Last updated♪09/03/14