學習筆記20 Python 單例

2021-10-23 12:00:14 字數 1631 閱讀 5189

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資料序列(元組)

其實元組簡單來說就是受限制的列表,具體受限於,定義乙個元組後,其內部的資料不可被修改 在我的老師跟我說到這裡的時候,我第一反應是有這個必要麼,元組之於列表如同子集之於全集,既然有全集為何這般刁鑽 其實不然,在現實生活中,有些東西是不允許被修改,亦或是不允許被輕易修改,如性別,身份證號碼,民族類別 等...