最近在看一些Python算法有關的東西。
從最簡單的樹的實作說起,當樹這樣的資料結構被原型化,它往往會是一個非常有用且很靈活的類型。
這時候可以用一個Bunch的設計模式。
實作方式有很多,但是基本上都會具備以下要素:
# Bunch設計模式
class Bunch(dict):
def __init__(self, *args, **kwds):
super(Bunch, self).__init__(*args, **kwds)
self.__dict__ = self
你可以用指令行參數的形式建立相關對象,并設定任何屬性:
x = Bunch(name='He', position='Club')
print(x.name)
輸出結果:
He
由于它繼承自dict類,我們可以自然而然地獲得大量相關内容,比如相對屬性值的周遊,或者是是查詢一個屬性是否存在:
x = Bunch(name='He', position='Club')
print(x.name)
T = Bunch
t = T(left=T(left="a", right="b"), right=T(left="c"))
print(t.left)
print(t.left.left)
print(t['left']['right'])
print("left" in t.right)
print("right" in t.right)
輸出結果:
{'right': 'b', 'left': 'a'}
a
b
True
False
當然,該模式下不僅可用于樹結構的建立,如果你希望有一個靈活的對象,并且屬性可以從構造器中被動态設定時,也可以用該模式來實作。
謝謝各位關注,最近天氣轉冷,大家注意保暖,謹防感冒!