單例模式,通俗的理解就是單個例項物件的模式,就是說這個類只能有乙個例項物件
我們先來看看它的應用場景,再看怎麼實現它
資源共享的情況下,避免由於資源操作時導致的效能或損耗等。如日誌檔案,應用配置。
控制資源的情況下,方便資源之間的互相通訊。如執行緒池等。 1.**的計數器 2.應用配置 3.多執行緒池 4. 資料庫配置,資料庫連線池 5.應用程式的日誌應用…
python實現單例模式一般有四種,我們按使用頻率較多的兩種舉例(個人見解)
使用new(父類重寫new繼承方法)
"""
python實現單例模式
"""class
singlecase
: __instance =
none
def__new__
(cls,
*args,
**kwargs)
:if cls.__instance is
none
: cls.__instance =
object
.__new__(cls)
return cls.__instance
else
:return cls.__instance
s1 = singlecase(
)print(id
(s1)
)s2 = singlecase(
)print(id
(s1)
)# 列印結果如下,兩個例項物件的 id 相同,即為同一物件
# 140248753833968
# 140248753833968
使用裝飾器的方法
def
singleton
(cls)
: _instance =
def_singleton
(*args,
**kargs)
:if cls not
in _instance:
_instance[cls]
= cls(
*args,
**kargs)
return _instance[cls]
return _singleton
@singleton
classa(
object):
a =1def
__init__
(self, x=0)
: self.x = x
a1 = a(2)
a2 = a(3)
print
(a1.x)
print
(a2.x)
列印結果
22
python單例模式繼承 python單例模式
我們可以使用 new 這個特殊方法。該方法可以建立乙個其所在類的子類的物件。更可喜的是,我們的內建 object 基類實現了 new 方法,所以我們只需讓 sing 類繼承 object 類,就可以利用 object 的 new 方法來建立 sing 物件了。classsing object def...
python的單例模式
在python面試中必問的兩組 python的單例模式 python的單例模式 單例模式 比如你在某地工作,你有回出差在附近。那你是不可能住 就在那裡買一套房吧?而你回選擇力公司附近買一套房就好。單例模式如此,就是在乙個類中定義乙個私有屬性例項化共接下來呼叫,不需要建立更多的例項來浪費資源。單例模式...
python的單例模式
django的相同名字的logger是單例模式的 logger1 logging.getlogger erebus logger1是乙個單例模式的例項 logger2 logging.getlogger erebus.test logger1也是乙個單例模式的例項,但是和logger1屬於不同的例項...