Python 基礎 物件導向 多型 二十六

2021-10-03 12:31:09 字數 1938 閱讀 3237

1. 單例設計模式

單例設計模式

**站物件

印表機物件

…2. __new__方法

重寫new方法 的**非常固定!

3. python 中的單例

定義乙個 類屬性, 初始值是 none , 用於記錄 單例物件的引用

重寫new方法

如果 類屬性 is none , 呼叫父類方法分配空間, 並在類屬性中記錄結果

返回 類屬性 中記錄的 物件引用

class

musicplayer

(object):

#記錄第乙個被建立物件的引用

instance

=none

def__new__

(cls,*

args,*

*kwargs):

#1.判斷類屬性是否是空物件

ifcls

.instance

isnone:#2.

呼叫父類的方法

,為第乙個物件分配空間

cls.

instance

=super()

.__new__

(cls)#

3.返回類屬性儲存的物件引用

return

cls.

instance

只執行一次初始化工作

讓 初始化動作 只被 執行一次

解決辦法

定義乙個類屬性 init_flag 標記是否 執行過初始化動作, 初始值為 false

init方法中, 判斷 init_flag , 如果為 false 就執行初始化動作

然後將 init_flag 設定為 true

這樣, 再次 自動 呼叫init方法時, 初始化動作就不會被再次執行 了

class

musicplayer

(object):

#記錄第乙個被建立物件的引用

instance

=none

#記錄是否執行過初始化方法

init_flag

=false

def__new__

(cls,*

args,*

*kwargs):

#1.判斷類屬性是否是空物件

ifcls

.instance

isnone:#2.

呼叫父類的方法

,為第乙個物件分配空間

cls.

instance

=super()

.__new__

(cls)#

3.返回類屬性儲存的物件引用

return

cls.

instance

def__init__

(self):

#1.判斷是否執行過初始化動作

ifmusicplayer

.init_flag:

return#2.

如果沒有執行過

,執行初始化動作

print()

#3.修改類屬性的標記

musicplayer

.init_flag

=true

#建立多個物件

player1

=musicplayer()

print

(player1

)player2

=musicplayer()

print

(player2

)

Python物件導向 多型

什麼是多型?多型就是一種事物有多種形態,比如說動物,有 貓 狗 老鼠 獅子 大象等。多型的好處 比如我們在新建立類時我們可以繼承動物類,動物類中的方法可以重寫,也可以不重寫,當我們新增時,只是新增乙個animals類而不需要再去修改父類 裡的內容,只需要呼叫就可以了。多型的最基本的實現就是通過繼承來...

python基礎 物件導向(八)多型,封裝

1.多型 通過繼承父類後,子類有了共有的父類的方法,當執行該方法時,可能效果不同,比如,水在不同溫度下有不同的形態 冰,水蒸氣,霧,他們在執行相同函式時候,效果不同 class h2o def init self,name,temperature self.name name self.temper...

python基礎 物件導向二

人狗大戰 def dog name,blood,aggr,kind dog def bite person person blood dog aggr print s被咬了,掉了 s的血 person name dog aggr dog bite bite return dog def person...