Java.use(better, Python)《9》for と別れる50の方法(その弐)
|記事一覧|《こちらに移動中です》2006年6月15日 (木)
Java.use(better, Python) # Stairway to Real Agile World
《9》for と別れる50の方法(その弐)《Jython2.5.0》
《著》後藤いるか・伊藤うさぎ・小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
第1版♪2003/05/23
■ 概要
__getitem__ を再定義すると、組み込み型と同様に、任意のインスタンスにも演算子 [] や for 文を適用できるようになります。
for 文が提供するフレームワークを任意のオブジェクトで活用するには、いくつかの方法があります。
《9》for と別れる50の方法(その弐)
■ イテレーターに代るもの
演算子 [] や for 文を使って、組み込み型(list, dict など)が保持する要素を参照できます。
>>> s [1, 2, 3, 4] >>> type(s) <type 'list'>変数 s は、4つの整数を列挙したリストを参照します。リストは、組み込み型 list のインスタンスです。リテラル表現 [ ] をもとに、リストのインスタンスを簡単に生成できます。リストの要素を順に参照するには、for 文を使うと便利です。>>> for e in s: ... print "@"+`e`, ... @1 @2 @3 @4for 文を使うと、制御変数 e を介して、リスト s の要素を順に参照できます。出力結果を見ると、"@" の後に各要素が続き、空白で区切られているのが分ります。13リスト s の添字に数値 0 を指定すると、先頭の要素 1 が得られます。添字は、先頭からのオフセットに相当するので、0 から始まります。オフセットは、出発点から到達点までの距離に相当します。そのため、添字に 2 を指定すると、先頭から距離 2 だけ隔てた、3番目の要素 3 が得られます。>>> m {'green': 2, 'blue': 4, 'red': 1} >>> type(m)変数 m は、3つの整数対(キーと値)を列挙した辞書を参照します。辞書は、組み込み型 dict のインスタンスです。リテラル表現 {} をもとに、辞書のインスタンスを簡単に生成できます。辞書の要素を順に参照するには、for 文を使うと便利です。 >>> for e in m: ... print "@"+e, ... @green @blue @redfor 文を使うと、制御変数 e を介して、辞書 m のキー要素を順に参照できます。出力結果を見ると、"@" の後に各キー要素が続き、空白で区切られているのが分ります。>>> m["red"] 1辞書 m の添字に文字列 "red" を指定すると(そのキー要素に)対応する値要素 1 が得られます。※ 制御変数 e は、キー要素だけを参照して、値要素は参照できません。□>>> s = xlist(s) >>> type(s); s.__class__任意のリスト s を保持する xlist のインスタンスを生成して、これを再び変数 s が保持します。このとき、任意のインスタンス s に対して、for 文を使えると便利です。 >>> for e in s: ... print "@"+`e`, ... @1 @2 @3 @4for 文を使うと、制御変数 e を介して、インスタンス s の要素を順に参照できます。出力結果を見ると、"@" の後に各要素が続き、空白で区切られているのが分ります。これは、組み込み型 list と同じです。>>> s[0] 1インスタンス s の添字に数値 0 を指定すると、s が保持する「リスト」の先頭の要素 1 が得られます。class xlist: def __init__(self, list): self.items = list def __getitem__(self, index): return self.items[index]
特殊メソッド __getitem__ を再定義すると、任意のインスタンスに対して、演算子 [ ] を適用できます。また、インスタンスを構成する要素を参照するのに、for 文を利用できます。引数 index には、各要素を参照するために添字が渡されます。ここでは、インスタンス属性 self.list がリストを保持しているので、添字 index で参照されるリストの要素をリターン値にします。================================== 後藤いるか+河野めだか 著 ◆ 監修:小泉ひよ子とタマゴ倶楽部《Note》特殊メソッド:__getitem__
__getitem__(self, key)式 self[key] を評価するときに実行されるコードを記述します。シーケンス型に対して有効なキーは、整数およびスライスなどです。□Last updated♪2009/08/03