這節主要記錄單例設計的模式與單例之後執行一次的方法
單例:
目的是讓這個只有乙個例項化的物件
使用時需更改__new__方法,且需設定類屬性
就先舉個例子:上**
class player(object):
instance = none
def __new__(cls, *args, **kwargs):
if cls.instance is none:
cls.instance=super().__new__(cls)
return cls.instance
建立了乙個player類,其中需要設定乙個類屬性instance = none,之後更改new方法,因為new方法在使用時是為類的物件創造空間的,所以為了每次建立的物件都不變,也就是說位址不變,所以每次返回的位址應該相同。於此同時,在new方法當中應該保證不再建立新的位址,所以進行對instance的判斷,是否位址相同,且存在,並賦值給instance,最後進行返回
建立物件:
player1=player()
player2=player()
print(player1)
print(player2)
我的執行結果:
<__main__.player object at 0x000001ff3301fbe0>
<__main__.player object at 0x000001ff3301fbe0>
接下來,講單例只進行一次初始化
就剛那個類 我進行新增方法和變數,乙個init方法和init__flag變數
上**:
class player(object):
instance = none
init__flag = false
def __new__(cls, *args, **kwargs):
if cls.instance is none:
cls.instance=super().__new__(cls)
return cls.instance
def __init__(self):
if player.init__flag:
return
print("初始化成功")
player.init__flag=true
其中init__flag需要進行初始化,對其賦值為false,然後在init方法當中對init__flag進行判斷,如果為false則進行初始化,說明物件還沒有建立過,就進行下面的輸出語句與對init__flag賦值為true,就此也就保證了下次建立物件不再進行初始化
看執行結果:
初始化成功
<__main__.player object at 0x00000133398ffbe0>
<__main__.player object at 0x00000133398ffbe0>
單例模式 只執行一次初始化
new 方法是構建物件的方法,init 方法是初始化物件的方法。概念 確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項,這個類稱為單例類,單例模式是一種物件建立型模式。目的 單個程序中只存在乙個類的例項,從而實現資料共享,節省系統開銷,防止io阻塞 方法1 使用模組建立單例 檔案ca...
一次性執行多條SQL語句
本地 windows 192.168.55.133 遠端1 192.168.55.9 遠端2 192.168.55.10 利用phpmyadmin來賂遠端sql server匯入大量資料時,會很慢,基於卡死。因為,它是通過web方式來上傳的,匯入之前它會首先將要匯入的.sql檔案先上傳到伺服器然後再...
shell一次性執行多條命令
1.每個命令之間用 隔開說明 各命令的執行給果,不會影響其它命令的執行。換句話說,各個命令都會執行,但不保證每個命令都執行成功。2.每個命令之間用 隔開 說明 若前面的命令執行成功,才會去執行後面的命令。這樣可以保證所有的命令執行完畢後,執行過程都是成功的。3.每個命令之間用 隔開 說明 是或的意思...