《25》帰属:メソッド __contains__〈Python 2.x 版〉
実録:はじめてのプログラミング《記事一覧》
《25》帰属:メソッド __contains__
《著》小粒ちゃん+α《監修》小泉ひよ子とタマゴ倶楽部
2009年2月17日(火)
関連記事
今日の進捗
- Language Reference: Data model; Emulating container types
- Python.use(better) -- セミナー研修テキスト
- 連結リスト課題を「続・ひよ子のきもち」で公開
Comment | |
---|---|
本人:野中 | 読むべき資料がたくさんあり過ぎてちょっと迷子になってます。 |
担当:伊藤/本間 | 。(^^) |
帰属:メソッド __contains__
組み込み型 list と同様に、演算子 in を利用して要素が含まれるかを判定できると便利です。すると、
def ex(): s = myList("ABC") print s,"\t#",s.__class__.__name__ for e in "AB@": print e,e in s,s.__contains__(e) >>> ex() ['A', 'B', 'C'] # myList A True True B True True @ False False
演算子 in を利用して、各要素が連結リストに含まれるかを判定できます。
class myList(object): ... def __contains__(self, value): for e in self: if e==value: return True return False
メソッド __contains__ は、演算子 in に呼応して、シーケンス内の要素かどうかを判定します。for に続く制御変数 e が、指定した引数 value と同じ値になるとき、真を表わす True をリターン値にします。同じ値が見つからないなら、偽を表わす False をリターン値にします。また、次のことから、
>>> s = myList("ABC"); s ['A', 'B', 'C'] >>> "A" in s True >>> s.__contains__("A") True
メソッド __contains__ が、演算子 in と同等の表現になるのが分かります。
読者への課題
else ブロックを利用して、次のように
def __contains__(self, value): for e in self: if e==value: return True else: return False
としたとき、その長所/短所について考察してくたさい。■
Tips
Last updated♪09/03/13