Python单例设计模式
生活随笔
收集整理的這篇文章主要介紹了
Python单例设计模式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
(1)為什么使用設(shè)計模式?
使用設(shè)計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。
(2)單例設(shè)計模式概念
讓類創(chuàng)建的對象只有唯一的一個實例,即每次執(zhí)行? 類名() 返回的對象,內(nèi)存地址都是相同的。
(3)__new__與__init__方法的作用:
使用 類名() 創(chuàng)建對象時,python解釋器首先會調(diào)用 __new__ 方法為對象分配內(nèi)存空間,該方法為基類object內(nèi)置的靜態(tài)方法,一般無需手動調(diào)用。
? ? ? ? __new__方法的作用有兩個:①為對象分配內(nèi)存空間;②返回對象引用。
__init__方法的作用有兩個:①對象初始化;②定義實例屬性。
(4)如何實現(xiàn)單例設(shè)計模式?
實現(xiàn)單例設(shè)計模式,其實就是重寫object基類的內(nèi)置靜態(tài)方法__new__,實現(xiàn)每次調(diào)用?類名()返回的對象的內(nèi)存地址不變。
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 class MusicPlayer(object): 4 instance = None 5 def __new__(cls, *args, **kwargs): 6 if cls.instance is None: 7 print("創(chuàng)建對象,分配空間") 8 cls.instance = super().__new__(cls) # 一定要重新調(diào)用父類的__new__方法,并添加參數(shù)cls,表示當(dāng)前調(diào)用的類 9 return cls.instance #返回對象的引用,解釋器才會繼續(xù)調(diào)用__init__方法初始化對象 10 11 def __init__(self): 12 print("播放器初始化") 13 14 if __name__ == '__main__': 15 piano = MusicPlayer() 16 print(piano) 17 18 guitar = MusicPlayer() 19 print(guitar)?
? ? ? ? ? ? ? ? ? ? ?
轉(zhuǎn)載于:https://www.cnblogs.com/clearlove4396/p/11442848.html
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Python单例设计模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JVM 参数及各部分含义(转)
- 下一篇: issubclass和isinstanc