Python.use(better, Tkinter=”GoF”) # Iterator #1
‖記事一覧‖ Python.use(better)《Python3.1》
《著》森こねこ・小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
α版♪1993/11/25 ● β版♪1995/11/22 ● 第1版♪2003/05/23
事例:コードの解説
■ Composite::Component
## ---------------------------------------- Composite::Component
class Component(object):
抽象クラス Component では、共通するプロトコルを規定します。
■ Iterator::Iterator
## ---------------------------------------- Iterator::Iterator def __iter__(self): pass
これらの抽象メソッドは、共通するプロトコルを規定するもので、子孫クラスで具体的な処理を記述します。
## ---------------------------------------- def print(self): for i, e in zip(self.indents(), self.nodes()): print("%s%s"%("+ "*i, e))
メソッド print では、子孫クラスに共通する文字列表現を規定します。
- indents を利用して、各ノードの階層をインデントによって表現します。
- nodes を利用して、各ノードが保持する項目を表現します。
■ Composite::Leaf:単一オブジェクト
## ---------------------------------------- Composite::Leaf class Leaf(Component):
具象クラス Leaf では、単一のノードを構成して、末端に位置する各ノード(葉)を実現します。
■ Iterator::Iterator
## ---------------------------------------- Iterator::Iterator def __iter__(self): return self
メソッド __iter__ は、組み込み関数 iter に呼応して、各ノードを参照する方法を規定します。
- Leaf は、末端に位置するので、それ自身 self をリターン値にします。
def __str__(self):
return "%s"%self.item
メソッド __str__ は、組み込み関数 str に呼応して、オブジェクトに固有の文字列表現を規定します。
## ----------------------------------------
def nodes(self):
return [self.item]
メソッド nodes では、各ノードが保持する項目 self.item を列挙したリストをリターン値にします。
def indents(self, level):
return [level]
メソッド indents では、各ノードの階層 level を列挙したリストをリターン値にします。
def dirs(self):
return [False]
メソッド dirs では、ディレクトリーではないことを表わす False を要素とするリストをリターン値にします。
↑TOP
関連記事
- INDEX《Tkinter》
- Python で学ぶ デザインパターンの世界《Tkinter》
- Let’s GoForward - GoF を反面教師に
- C# Design Patterns 24. The Iterator Pattern.
- Python.use(better, Tkinter=”GoF”)
Iterator
Last updated♪2009/10/30