Python中的Bunch模式

2022-06-03 05:33:08 字數 896 閱讀 4718

最近在看《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

>>> t.left.right

'2'>>> t['left']['right']

'2'>>> 'left' in t.right

true

>>> '3' in t.right

false

這樣就構建好了樹型結構,因為bunch模式非常靈活,其屬性可以動態設定,所以可以用該模型實現很多態別。

Python中的Bunch模式

引用 當樹這樣的資料結構被原型化 或者乃至於被定型 時,它往往會時乙個非常有用而靈活的型別,允許我們在其構造器中設定任何屬性。在這些情況下,我們會需要用到一種叫做 bunch 的設計模式。class bunch dict def init self,args,kwargs super bunch,s...

python中的單例模式

單例模式 顧名思義是只有乙個例項記憶體位址,根據意思理解就是不論建立多少個例項物件,都只有乙個記憶體位址,單例模式是基於類的,是例項類物件,有別與 init init 是例項化物件.如下 domeclass single instance object instance none def init ...

Python 中的單例模式

單例就是解決在記憶體中始終只有乙個例項物件的問題,在python中實現起來很簡單,python中是通過new函式來分配記憶體的,舉個栗子 class musicplayer instance none def new cls,args,kwargs if cls.instance is none c...