《24》添字付け:メソッド __setitem__〈Python 3.0 版〉
実録:はじめてのプログラミング《記事一覧》
《24》添字付け:メソッド __setitem__
《著》小粒ちゃん+α《監修》小泉ひよ子とタマゴ倶楽部
第3版♪2009/02/28 ● 2009年2月16日(月)
関連記事
- Python への扉
- INDEX: S《Python》__setitem__
- 実録 はじめての…《24》添字付け:メソッド __setitem__ - 続・ひよ子のきもち〈Python 2.x 版〉
添字付け:メソッド __setitem__
組み込み型 list と同様に、添字を利用して各要素を設定できると便利です。すると、
def ex(): s1 = myList("ABC") s2 = myList("XYZ") print(s1,"\t#",s1.__class__.__name__) for i in range(len(s1)): s1[i] = s2[i] print(s1,"\t#",s1.__class__.__name__) >>> ex() ['A', 'B', 'C'] # myList ['X', 'Y', 'Z'] # myList
演算子 [] および = を組み合わせて、各要素を再設定できます。
class myList(object): ... def __setitem__(self, key, value): node,n = self.head.next,0 while node: if n==key: node.item = value; break node,n = node.next,n+1
メソッド __setitem__ は、演算子 [] および = に呼応して、添字を利用して各要素を設定する手段を提供します。局所変数 n が、指定した引数 key と同じ値になるとき、そのノードの値 node.item を引数 value と同じ値に再設定します。また、次のことから、
>>> s = myList("ABC"); s ['A', 'B', 'C'] >>> s[1] = '@'; s ['A', '@', 'C'] >>> s = myList("ABC"); s ['A', 'B', 'C'] >>> s.__setitem__(1,"@"); s ['A', '@', 'C']
メソッド __setitem__ が、演算子 [] と同等の表現になるのが分かります。