引用:
當樹這樣的資料結構被原型化(或者乃至於被定型)時,它往往會時乙個非常有用而靈活的型別,允許我們在其構造器中設定任何屬性。在這些情況下,我們會需要用到一種叫做「bunch」的設計模式。
classbunch(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"
(x.a)'1
(x.b)'2
(x.c)'3
'
這樣就構建好了樹型結構,因為bunch模式非常靈活,其屬性可以動態設定,所以可以用該模型實現很多態別。
t =buncht = 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」的設計模式。
classbunch(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"
(x.a)'1
(x.b)'2
(x.c)'3
'
這樣就構建好了樹型結構,因為bunch模式非常靈活,其屬性可以動態設定,所以可以用該模型實現很多態別。
t =buncht = 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...