Python中的Bunch模式

2022-07-01 16:21:09 字數 1831 閱讀 8405

引用:

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

class

bunch(dict):

def__init__(self, *args, **kwargs):

super(bunch, self).

__init__(*args, **kwargs)

self.

__dict__ = self

由於這個類直接繼承dict類,所以我們可以自然而然地獲得dict類地大量功能,比如對鍵/值的遍歷,或者簡單查詢乙個屬性是否存在。

>>> x = bunch(a="

1", b="

2", c="3"

)>>> print

(x.a)'1

'>>> print

(x.b)'2

'>>> print

(x.c)'3

'

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

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'

int.right

false

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

class

bunch(dict):

def__init__(self, *args, **kwargs):

super(bunch, self).

__init__(*args, **kwargs)

self.

__dict__ = self

由於這個類直接繼承dict類,所以我們可以自然而然地獲得dict類地大量功能,比如對鍵/值的遍歷,或者簡單查詢乙個屬性是否存在。

>>> x = bunch(a="

1", b="

2", c="3"

)>>> print

(x.a)'1

'>>> print

(x.b)'2

'>>> print

(x.c)'3

'

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

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'

int.right

false

Python中的Bunch模式

最近在看 python演算法教程 今天看到了乙個新的模式,記錄下來。引用 當樹這樣的資料結構被原型化 或者乃至於被定型 時,它往往會時乙個非常有用而靈活的型別,允許我們在其構造器中設定任何屬性。在這些情況下,我們會需要用到一種叫做 bunch 的設計模式。class bunch dict def i...

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...