單例模式(Singleton)是一種程序設(shè)計(jì)模式灵迫,它保證在程序中,應(yīng)用該模式的類(lèi)只有一個(gè)實(shí)例晦溪。
Python 其實(shí)沒(méi)有什么必要用 Singleton瀑粥,至少我沒(méi)有用到過(guò)。但是有必要記住這種設(shè)計(jì)模式尼变,以防萬(wàn)一利凑。
它的實(shí)現(xiàn)并不復(fù)雜:
class Singleton:
__instance = None
def __new__(cls, *args, **kwargs):
if cls.__instance is None:
cls.__instance = super().__new__(cls)
return cls.__instance
這樣一來(lái)浆劲,Singleton() 對(duì)象及其子類(lèi)的對(duì)象都是唯一的實(shí)例嫌术。
下面的代碼應(yīng)該返回 True,以及一模一樣的 id 值牌借。
s1 = Singleton()
s2 = Singleton()
print(s1 == s2)
print(id(s1), id(s2))