最近在看《Python算法教程》,今天看到了一個新的模式,記錄下來。python
引用:
算法
當樹這樣的數據結構被原型化(或者乃至於被定型)時,它每每會時一個很是有用而靈活的類型,容許咱們在其構造器中設置任何屬性。在這些狀況下,咱們會須要用到一種叫作「Bunch」的設計模式。
設計模式
class Bunch(dict): def __init__(self, *args, **kwargs): super(Bunch, self).__init__(*args, **kwargs) self.__dict__ = self
先舉個例子簡單的使用下這個Bunch類
數據結構
>>> x = Bunch(a="1", b="2", c="3") >>> print (x.a) '1' >>> print (x.b) '2' >>> print (x.c) '3'
因爲這個類直接繼承dict類,因此咱們能夠天然而然地得到dict類地大量功能,好比對鍵/值的遍歷,或者簡單查詢一個屬性是否存在。spa
T = Bunch t = T(left=T(left="1",right="2"),right=T(left="3",right="4")) >>> t.left {'left': '1', 'right': '2'} >>> t.left.right '2' >>> t['left']['right'] '2' >>> 'left' in t.right True >>> '3' in t.right False這樣就構建好了樹型結構,由於Bunch模式很是靈活,其屬性能夠動態設置,因此能夠用該模型實現不少類型。