分享兩種 Python 中的單例模式

2022-03-27 21:55:23 字數 1003 閱讀 3794

中心思想 : 在例項之前判斷 該類的屬性有沒有被例項化過。 如果沒有就例項話, 有的話就返回上一次例項話

第一種: 通過 python 自帶的 __new__ 去實現

import threading

class singleton(object

): _instance_lock =threading.lock()

def __init__(self):

pass

def __new__(cls, *args, **kwargs):

if not hasattr(singleton, "

_instance"):

with singleton._instance_lock:

if not hasattr(singleton, "

_instance"):

singleton._instance = object

.__new__(cls)

return

singleton._instance

obj1 =singleton()

obj2 =singleton()

print(obj1,obj2)

第二種: 通過裝飾器

def sing(cls):

_instance ={}

def _sig(*args, **kwargs):

if cls not in

_instance:

_instance[cls] = cls(*args, **kwargs)

return

_instance[cls]

return

_sig

@sing

class

a: def __init__(self):

self.x = 1

a1 =a()

a2 =a()

print(a1, a2)

**部落格: 

兩種單例模式

一。單例模式 有以下的特點 eg。每台計算機可以有若干通訊埠,系統應當集中管理這些通訊埠,以避免乙個通訊埠同時被兩個請求同時呼叫。為了避免不一致狀態 1 單例類只能有乙個例項。2 單例類必須自己建立自己的唯一例項。3 單例類必須給所有其他物件提供這一例項。1 懶漢式單例 singleton通過將構造...

JAVA中的兩種單例模式

乙個類中我們可以通過new 建立很多的物件,但是有的類只允許有乙個物件來進行操作,這就是所謂的單例模式。我們都知道單例模式有兩種,一種是餓漢模式,一種是懶漢模式。顧名思義,懶漢模式就是在需要時候才建立單例物件,而餓漢模式我們可以理解它很餓所以急切提前把單例物件建立好,不管需不需要。關於單例物件,我們...

單例模式的兩種方式,執行緒安全的懶漢式單例模式

隨手記。單例模式作為23種設計模式種比較經典的,一般都要求能夠手寫 很簡單 下面寫一下兩種實現方式 步驟 1.新建乙個類,提供私有構造器 2.使用構造器宣告當前物件例項成員 3.宣告public static的返回當前類物件的方法 4.要在方法中使用私有物件成員,要將例項成員宣告為static的 p...