1.設計模式
設計模式是前人工作的總結和提煉,通常,被人們廣泛流傳的設計模式都
是針對某一特定問題的成熟解決方案
使用設計模式是為了可重用**,讓**更容易被他人理解,
保證**可靠性
2.單例設計模式
目的:讓類建立物件,在系統中只有唯一的乙個例項(物件)
每一次執行類名()返回的物件
記憶體位址是相同的
3.怎麼保證 這些物件只有乙個?
__new__方法:
我們用 類名. 的方式建立物件的時候,python直譯器會幫我們做兩件事情,是哪兩件事情呢?
1.為物件分配空間 2.物件初始化
使用類名()建立物件時,python的直譯器首先會呼叫__new__方法為物件分配空間
__new__是乙個由object基類提供的內建的靜態方法,主要有兩個作用:
在記憶體中為物件分配空間
返回物件的引用
python的直譯器獲得物件的引用後,將引用作為第乙個引數,傳遞給__init__方法
new:負責給物件分配空間init(初始化方法)負責給物件初始化
我們要重寫new方法,使用類名()建立物件的時候,返回的都是同乙個位址
重寫__new__方法的**非常固定:
繼承自父類方法
返回父類方法呼叫_new__方法的結果
重寫__new__方法一定要return object.__new__(cls)
否則python的直譯器得不到分配了空間的物件引用,就不會呼叫物件的初始化方
讓類建立的物件在系統中只有唯一乙個例項,也就是說這個類在系統中只有乙個對應的物件。每次執行類名返回的物件其記憶體位址是相同的
例如開啟qq**時,只能放一首歌,不能同時放兩首歌。
class
musciplayer
(object)
: instance = none
def __new__
(cls,
*args,
**kwargs)
:if cls.instance is none:
cls.instance = object.
__new__
(cls)
return cls.instance
player1 =
musciplayer()
player2 =
musciplayer()
print
(player1)
print
(player2)
結果:<__main__.musciplayer object at 0x7f5c7977c438
>
<__main__.musciplayer object at 0x7f5c7977c438
> #返回兩個相同的記憶體位址空間
python設計模式 單例設計模式
樣式一 class musicplayer object instance none 設定類屬性,用來判斷是否有物件得到記憶體空間 init flag false 0表示還沒有初始化 1代表已經初始化 使用內建函式進行空間的分配 def new cls,args,kwargs cls 哪個類呼叫,就...
python設計模式 單例
是一種常用的設計模式,該模式的主要目的是確保某乙個類有且只有乙個例項存在。當希望系統中,某個類只能出現乙個例項時,就可以應用單例物件。每個例項都會占用一定的記憶體資源,且初始化例項時會影響執行效能,所以當整個系統只需乙個例項時,使用單例模式不僅可減少資源占用,而且因為只初始化一次,還可以加快執行效能...
python 單例設計模式
windows系統中的 站,無論任何地方呼叫的 站都指向的是同乙個 站,站的屬性和方法會被重複呼叫,這樣容易產生衝突浪費資源,這種情況下,單例模式就是乙個很好的實現方法。python的設計模式主要有三大類 建立類設計模式 結構類設計模式 行為類設計模式 python與設計模式相關介紹 類是抽象的,先...