標籤:

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特色數據類型(字典)(下)

TAG:Python | 算法 |