單例模式是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例類的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項而且該例項易於外界訪問,從而方便對例項個數的控制並節約系統資源。如果希望在系統中某個類的物件只能存在乙個,單例模式是最好的解決方案。
單例模式的要點有三個;一是某個類只能有乙個例項;二是它必須自行建立這個例項;三是它必須自行向整個系統提供這個例項。
實現__new__方法,然後將類的乙個例項繫結到類變數__instance上;如果cls.__instance為none,則說明該類還沒有被例項化過,new乙個該類的例項,並返回;如果cls.__instance不為none,直接返回__instance,**如下:
class
person
(object):
# 這是乙個單例類
__instance =
none
# 這個類屬性儲存的是例項物件
def__new__
(cls,
*args,
**kwargs):if
not cls.__instance:
# 如果__instance沒有儲存例項物件,就用父類方法構建
cls.__instance =
super
(person, cls)
.__new__(cls,
*args,
**kwargs)
return cls.__instance
if __name__ ==
'__main__'
: ming = person(
)print(id
(ming)
)#id方法是指向物件的記憶體位址
xiao = person(
)print(id
(xiao)
)輸出:
36082016
36082016
用的hasattr方法
class
singleton
:def
__new__
(cls,
*args,
**kwargs)
:print
('獲取例項')if
nothasattr
(cls,
'_instance'):
print
('沒有例項,第一次初始化'
) cls._instance =
super
(singleton, cls)
.__init__(cls,
*args,
**kwargs)
return cls._instance
python中單例模式的實現
單例模式 保證系統中乙個類只有乙個例項而且該例項利於外界訪問。下面是python實現單例模式的一種方式。這裡用了重寫new方法來實現單例模式。在python中 new 方法是乙個靜態方法 它在物件被建立時呼叫,為物件分配空間,並且返回乙個位址傳給 init 方法 new 方法的第乙個引數是表示當前類...
python手寫單例 Python實現單例模式
語言是共通的,想要用不同語言實現單例模式,首先要清楚什麼是單例模式,單例模式即乙個類有且僅有乙個例項,那麼通過python怎麼實現乙個類只能有乙個例項呢。首先先建立乙個類,比如宇宙只有乙個地球 class earth pass a earth print id a b earth print id ...
python 實現單例
單例即單個例項,就是乙個類建立例項物件時無論他建立了多少個例項這些例項同樣的 正常情況先乙個類建立n個例項物件就有n個不同的例項 單例的作用 節省記憶體空間,若每次都用類建立不同的例項就會造成空間的極大浪費 這裡介紹最簡單的實現單例的方法 使用 new 方法 new 方法的作用在於建立乙個例項,發生...