python 的單例模式

2021-10-08 15:59:15 字數 1424 閱讀 3837

單例模式,通俗的理解就是單個例項物件的模式,就是說這個類只能有乙個例項物件

我們先來看看它的應用場景,再看怎麼實現它

資源共享的情況下,避免由於資源操作時導致的效能或損耗等。如日誌檔案,應用配置。

控制資源的情況下,方便資源之間的互相通訊。如執行緒池等。 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屬於不同的例項...