Python單例模式的問題

2021-06-26 02:23:27 字數 354 閱讀 4073

python利用新式類可以使用單例模式,重複生成物件,雖然只會返回同乙個物件,但是其初始化函式__init__會反覆被呼叫,對於效能會產生不利的影響, 如果在__init__函式中放置執行初始化的**,那麼這些**也會被反覆執行,如果這些**還涉及到對外部介面的訪問,那麼會拖慢系統的執行時間。

正確的做法:

1.將資料(沒有必要反覆初始化的部分,其實既然運用了單例,某種程度上也說明物件的資料成員與類的靜態也應該是一體的)盡量放置到靜態成員

2.將這部分資料的初始化,放置到__new__函式中(生成類例項的分支下),這樣初始化資料的**只會被執行一次

3.如果為了進一步減少執行__new__  __init__的時間,就使用全域性變數

python單例模式繼承 python單例模式

我們可以使用 new 這個特殊方法。該方法可以建立乙個其所在類的子類的物件。更可喜的是,我們的內建 object 基類實現了 new 方法,所以我們只需讓 sing 類繼承 object 類,就可以利用 object 的 new 方法來建立 sing 物件了。classsing object def...

單例模式的問題

單例模式會產生執行緒不安全嗎?哪種模式會?如何解決?效率會受到影響嗎?如何提公升效率?答 會 懶漢式加同步 效率會受到影響 在同步 塊外賣你加上if判斷 public static singledemo getinstance return sd 假設多執行緒時,有t1和t2兩個執行緒。因為剛開始的...

單例模式的問題

單例模式三要素 構造方法私有化 靜態屬性指向例項 public static的 getinstance方法,返回第二步的靜態屬性 餓漢式單例模式 giantdragon 應該只有乙隻,通過私有化其構造方法,使得外部無法通過new 得到新的例項。giantdragon 提供了乙個public stat...