Python3 实现单例设计模式
生活随笔
收集整理的這篇文章主要介紹了
Python3 实现单例设计模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
單例模式的一般實現
餓漢式
懶漢式就是通過一個方法才能實現單例,我不是很常用,所以在此就寫個餓漢式。以后再補懶漢式。
單例模式的核心作用是保證一個類只有一個該類型的對象。在一個對象被過多調用時避免過多的消耗內存,即可使用單例模式。
在python中新建一個對象會調用 __new__ 方法為創建的對象分配其內存空間,并且返回該對象的引用,隨后將會傳給 __init__ 函數進行實例化。
一般情況下并不需要調用 new 方法,當使用單例時這一步是必要的。在重寫 new 方法時需要返回當前實例的類 cls :return super().__new__(cls)。得到了分配的內存空間引用后,開始為對象進行實例化,代碼可以簡單的寫為如下:
class ClassObj(object):def __new__(cls):print("進行分配內存")return super().__new__(cls)def __init__(self):print("開始初始化") cobj = ClassObj()運行結果如下:
但是以上的代碼并沒有實現單例模式,這個時候,我們需要對以上代碼進行更改。
在使用 new 方法時判斷是否已經被實例化:
以上代碼在ClassObj中,定義了一個成員變量 instance,用來存儲分配的空間引用,并且在__new__方法中最后return instance;假設第一次新建該類對象,instance為None則會進行實例化,假設不為None,則會提示已經分配了,不會再次分配空間,進行創建。運行結果如下:
以上結果只在第一次新建對象時分配了空間,之后創建對象并沒有新建空間。
這時也可以直接輸出類對象查看空間:
結果如下是相同的:
總結
以上是生活随笔為你收集整理的Python3 实现单例设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python thinker canva
- 下一篇: Python3 实现建造者模式