Python中一個創建樹結構的方法。
最近在看一些Python演算法有關的東西。
從最簡單的樹的實現說起,當樹這樣的數據結構被原型化,它往往會是一個非常有用且很靈活的類型。
這時候可以用一個Bunch的設計模式。
實現方式有很多,但是基本上都會具備以下要素:
# Bunch設計模式nclass Bunch(dict):n def __init__(self, *args, **kwds):n super(Bunch, self).__init__(*args, **kwds)n self.__dict__ = selfn
你可以用命令行參數的形式創建相關對象,並設置任何屬性:
x = Bunch(name=He, position=Club)nprint(x.name)n
輸出結果:
Hen
由於它繼承自dict類,我們可以自然而然地獲得大量相關內容,比如相對屬性值的遍歷,或者是是查詢一個屬性是否存在:
x = Bunch(name=He, position=Club)nprint(x.name)nnT = Bunchnt = T(left=T(left="a", right="b"), right=T(left="c"))nprint(t.left)nprint(t.left.left)nprint(t[left][right])nprint("left" in t.right)nprint("right" in t.right)n
輸出結果:
{right: b, left: a}nanbnTruenFalsen
當然,該模式下不僅可用於樹結構的創建,如果你希望有一個靈活的對象,並且屬性可以從構造器中被動態設置時,也可以用該模式來實現。
謝謝各位關注,最近天氣轉冷,大家注意保暖,謹防感冒!
推薦閱讀:
※Python 類組合(composition)和聚合(aggregation)
※有哪些學習氛圍比較不錯的 Python 論壇?
※pyinstaller無法打包含requests模塊的程序?
※Python從零開始系列連載(23)——Python特色數據類型(字典)(下)