Python.use(better, Tkinter=”GoF”) # Iterator #3
‖記事一覧‖ Python.use(better)《Python3.1》
《著》森こねこ・小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
α版♪1993/11/25 ● β版♪1995/11/22 ● 第1版♪2003/05/23
事例:コードの解説
■ Composite::Client
## ---------------------------------------- Composite::Client
class TIPS(object): # Client, Aggregate
クラス TIPS では、Composite を利用するアプリケーションを規定します。
def __init__(self, master, path): self.tree = Composite(self.tail(path)) self.dirImage = PhotoImage(file="_image/folder.gif") self.fileImage = PhotoImage(file="_image/file.gif") self.master = master self.path = path def tail(self, path): return path.split("/")[-1]
メソッド __init__ では、さまざまなインスタンス属性を初期設定します。
## ---------------------------------------- def makeTree(self): tab = " " tab_folder = " + " tab_file = " . " T = self.tree for indent, dir, node in zip( T.indents(), T.dirs(), T.nodes() ): self.createNode( master=self.master, tab=tab*indent+(tab_file, tab_folder)[dir], text=self.tail(node), image=(self.fileImage, self.dirImage)[dir], )
メソッド makeTree は、ディレクトリーの傘下にある階層構造をもとに、ツリー self.tree を生成します。
def createNodes(self): self._createNodes(self.tree, self.path) def _createNodes(self, parent, path, indent=0): for e in listdir(path): current = join(path, e) if isdir(current): component = Composite(e) parent.add_(component) self._createNodes(component, current, indent+1) else: component = Leaf(e) parent.add_(component)
関連記事
- 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