Python中的Bunch模式


最近在看《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類地大量功能,比如對鍵/值的遍歷,或者簡單查詢一個屬性是否存在。

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模式非常靈活,其屬性可以動態設置,所以可以用該模型實現很多類型。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM