class
musicplayer
:def
__new__
(cls,
*args,
**kwargs)
:# 1、建立物件時 new 方法會被自動呼叫
print
("建立物件,分配空間"
)# 2、為物件分配空間
instance =
super()
.__new__(cls)
# 3、返回物件的引用
return instance
def__init__
(self)
:print()
player = musicplayer(
)print
(player)
單例 —— 讓 類 建立的物件,在系統中 只有 唯一的乙個例項
class
musicplayer
:# 記錄第乙個被建立物件的引用
instance =
none
def__new__
(cls,
*args,
**kwargs)
:# 判斷類屬性是否為空物件
if cls.instance is
none
:# 呼叫父類方法為第乙個物件分配空間
cls.instance =
super()
.__new__(cls)
# 返回類屬性儲存的物件引用
return cls.instance
player1 = musicplayer(
)print
(player1)
player2 = musicplayer(
)print
(player2)
class
musicplayer
:# 記錄第乙個被建立物件的引用
instance =
none
init_flag =
false
def__new__
(cls,
*args,
**kwargs)
:# 判斷類屬性是否為空物件
if cls.instance is
none
:# 呼叫父類方法為第乙個物件分配空間
cls.instance =
super()
.__new__(cls)
cls.init_flag =
true
# 返回類屬性儲存的物件引用
return cls.instance
def__init__
(self)
:if musicplayer.init_flag:
print
("初始化"
) musicplayer.init_flag =
false
player1 = musicplayer(
)print
(player1)
player2 = musicplayer(
)print
(player2)
Python學習筆記 單例 new
1 單例設計模式 目的 讓類建立的物件,在系統張總只有唯一的乙個例項 使用設計模式 是為了可重用 讓 更容易被他人理解 保證 可靠性 2 new 方法 使用類名 建立物件時,python的直譯器首先會呼叫 new 方法為物件分配空間 new 是乙個由object基類提供的內建的靜態方法,主要作用 在...
1044 火星數字 20 Python
開始的時候測試點2與4顯示答案錯誤,後來在查閱資料的時候,突然想到是有個情況沒有考慮到,就是在從地球文轉換為火星文時,對於例如13的地球文,在轉換為火星文時,應該只輸出進製就可以了,不需要把個位的0對用的火星文顯示出來,在改了這個問題後,就全部通過了。這個題目並不難,主要是把這種情況都考慮清楚。得到...
20 python資料序列(元組)
其實元組簡單來說就是受限制的列表,具體受限於,定義乙個元組後,其內部的資料不可被修改 在我的老師跟我說到這裡的時候,我第一反應是有這個必要麼,元組之於列表如同子集之於全集,既然有全集為何這般刁鑽 其實不然,在現實生活中,有些東西是不允許被修改,亦或是不允許被輕易修改,如性別,身份證號碼,民族類別 等...