Python中的Bunch模式

最近在看《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模式很是靈活,其屬性能夠動態設置,因此能夠用該模型實現不少類型。
相關文章
相關標籤/搜索