1. 程式人生 > >單例模式的一種解釋

單例模式的一種解釋

代碼 object 判斷 art int 證明 python 默認 urn

語言是共通的,想要用不同語言實現單例模式,首先要清楚什麽是單例模式,單例模式即一個類有且僅有一個實例,那麽通過python怎麽實現一個類只能有一個實例呢。

首先先創建一個類,比如宇宙只有一個地球

class Earth:
pass

a = Earth()
print(id(a))
b = Earth()
print(id(b))
運行結果如下:

通過打印實例的id可以發現,地球類默認創建了兩個實例。

那麽怎麽能夠讓類只創建一個實例,而後再創建的實例是返回上一次的對象的引用呢?

我們了解到,python中,一個類創建對象實例是通過調用父類object的 __new__(cls)方法來創建對象的

我們可以通過重寫 __new__(cls)方法去實現類只創建一個實例

代碼如下:

class Earth(object):
__instance=None #定義一個類屬性做判斷

def __new__(cls):

if cls.__instance==None:
#如果__instance為空證明是第一次創建實例
#通過父類的__new__(cls)創建實例
cls.__instance==object.__new__(cls)
return cls.__instance

else:
#返回上一個對象的引用
return cls.__instance

a = Earth()
print(id(a))
b = Earth()
print(id(b))
運行結果如下:

單例模式的一種解釋