クラス FileSystem:Component
## -------------------- # Composite::Component class FileNode(TreeViewItem): def __init__(self, name): self.Header = name self.size = 0
属性 self.Header は、親クラスから継承したもので、フォルダー/ファイルの名前を管理します。属性 self.size は、フォルダー/ファイルのサイズを管理します。ここでは、空のフォルダーを想定して、初期値 0 を設定しています。後に、実際のファイルサイズを設定します。
def total(self): return reduce( lambda acc, e: acc + e.total(), self.Items, self.size)
属性 self.Items は、親クラスから継承したもので、部分木を構成する各要素 TreeViewItem を管理します。各項目(フォルダー/ファイル)e.total() の値を累計したものが、リターン値となります。
def changed(self, client): client.update("%d bytes"%self.total())
各項目(フォルダー/ファイル)の値を累計した e.total() を使って、表示を更新します。