《24》添字付け:メソッド __setitem__〈Python 2.x 版〉
実録:はじめてのプログラミング《記事一覧》
《24》添字付け:メソッド __setitem__
《著》小粒ちゃん+α《監修》小泉ひよ子とタマゴ倶楽部
2009年2月16日(月)
関連記事
今日の進捗
Comment | |
---|---|
本人:野中 | メールのやりとりに慣れてしまったせいか土日にメールしないととても寂しかったです。 |
担当:伊藤/本間 | 。(^^) |
添字付け:メソッド __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__ が、演算子 [] と同等の表現になるのが分かります。