demo.py(單例):
class musicplayer(object):
# 類屬性 記錄物件引用
instance = none
def __new__(cls, *args, **kwargs):
# 1. 判斷類屬性是否是空物件
if cls.instance is none:
# 2. 呼叫父類的方法,為第乙個物件分配空間
cls.instance = super().__new__(cls)
# 3. 返回類屬性儲存的物件引用
return cls.instance
# 建立多個物件
player1 = musicplayer()
print(player1)
player2 = musicplayer()
print(player2)
執行結果:
<__main__.musicplayer object at>
<__main__.musicplayer object at>
demo.py(__init__初始化方法只執行一次):
c musicplayer(object):
# 類屬性 記錄物件引用
instance = none
# 標記是否執行過初始化動作
init_flag = false
def __new__(cls, *args, **kwargs):
# 1. 判斷類屬性是否是空物件
if cls.instance is none:
# 2. 呼叫父類的方法,為第乙個物件分配空間
cls.instance = super().__new__(cls)
# 3. 返回類屬性儲存的物件引用
return cls.instance
def __init__(self):
# 1. 判斷是否執行過初始化動作
if musicplayer.init_flag:
return
# 2. 如果沒有執行過,再執行初始化動作
print("初始化**器")
# 3. 修改類屬性的標記
musicplayer.init_flag = true
# 建立多個物件www.cppcns.com
player1 = musicplayer()
print(player1)
player2 = musicplayer()
print(player2)
執行結果:
初始化**器
<__main__.musicplayer object at>
<__main__.musicplayer object at>
Python設計模式 工廠模式 單例模式的實現
設計模式是物件導向語言特有的內容,設計模式有很多種,比較流行的是gof23種設計模式。通過模式實現了多種分離,大型的專案中採用模式實現 常用的設計模式 工廠模式和單例模式 該模式實現了建立者和呼叫者的分離,使用專門的工廠類將選擇實現類 建立物件進行統一的管理和控制 測試工廠模式 class ca c...
設計模式之單例模式 Singleton C 實現
特點 1.建構函式 私有化,因此不能直接定義乙個該類的物件 private csingle 2.定義乙個型別為 該類本身的指標 的乙個靜態成員 static csingleton m singleinstance 3.定義乙個返回型別為 該類本身的指標 的乙個靜態成員函式 static csingl...
python設計模式 單例設計模式
樣式一 class musicplayer object instance none 設定類屬性,用來判斷是否有物件得到記憶體空間 init flag false 0表示還沒有初始化 1代表已經初始化 使用內建函式進行空間的分配 def new cls,args,kwargs cls 哪個類呼叫,就...