05 物件導向封裝案例 II

2021-09-11 05:16:49 字數 2875 閱讀 8582

封裝

封裝是物件導向程式設計的一大特點

物件導向程式設計的第一步—— 將屬性方法封裝到乙個抽象的

外界使用建立物件,然後讓物件呼叫方法物件方法的細節都被封裝類的內部

乙個物件的屬性可以是另外乙個類建立的物件

需求士兵許三多有一把ak47士兵可以**能夠發射子彈

裝填裝填子彈——增加子彈數量

shoot方法需求

class

gun:

def__init__

(self, model)

:# 槍的型號

self.model = model

# 子彈數量

self.bullet_count =

0def

add_bullet

(self, count)

: self.bullet_count += count

defshoot

(self)

:# 判斷是否還有子彈

if self.bullet_count <=0:

print

("沒有子彈了..."

)return

# 發射一顆子彈

self.bullet_count -=

1print

("%s 發射子彈[%d]..."

%(self.model, self.bullet_count)

)# 建立槍物件

ak47 = gun(

"ak47"

)ak47.add_bullet(50)

ak47.shoot(

)

假設:每乙個新兵 都沒有槍

定義沒有初始值的屬性在定義屬性時,如果不知道設定什麼初始值,可以設定為none

fire方法需求

class

soldier

:def

__init__

(self, name)

:# 姓名

self.name = name

# 槍,士兵初始沒有槍 none 關鍵字表示什麼都沒有

self.gun =

none

deffire

(self)

:# 1. 判斷士兵是否有槍

if self.gun is

none

:print

("[%s] 還沒有槍..."

% self.name)

return

# 2. 高喊口號

print

("衝啊...[%s]"

% self.name)

# 3. 讓槍裝填子彈

self.gun.add_bullet(50)

# 4. 讓槍發射子彈

self.gun.shoot(

)

小結建立了乙個士兵類,使用到__init__內建方法

在定義屬性時,如果不知道設定什麼初始值,可以設定為none封裝的方法內部,還可以讓自己的使用其他類建立的物件屬性呼叫已經封裝好的方法身份運算子用於比較兩個物件的記憶體位址是否一致 ——是否是對同乙個物件的引用

運算子描述

例項is

is 是判斷兩個識別符號是不是引用同乙個物件

x is y,類似 id(x) == id(y)

is not

is not 是判斷兩個識別符號是不是引用不同物件

x is not y,類似 id(a) != id(b)

is用於判斷兩個變數 引用物件是否為同乙個

==用於判斷引用變數的值是否相等

>>

> a =[1

,2,3

]>>

> b =[1

,2,3

]>>

> b is a

false

>>

> b == a

true

Python物件導向05 物件導向封裝案例 II

封裝 封裝是物件導向程式設計的一大特點 物件導向程式設計的第一步 將屬性和方法封裝到乙個抽象的類中 外界使用類建立物件,然後讓物件呼叫方法物件方法的細節都被封裝在類的內部乙個物件的屬性可以是另外乙個類建立的物件 需求 士兵許三多有一把ak47士兵可以 槍能夠發射子彈 槍裝填裝填子彈 增加子彈數量sh...

Python物件導向封裝案例 II

士兵突擊案例 身份運算子 封裝 是物件導向程式設計的一大特點 物件導向程式設計的 第一步 將 屬性 和 方法 封裝 到乙個抽象的 類 中 外界 使用 類 建立 物件,然後 讓物件呼叫方法 物件方法的細節 都被 封裝 在 類的內部 乙個物件的 屬性 可以是 另外乙個類建立的物件 需求士兵 許三多 有一...

物件導向封裝案例

封裝是物件導向程式設計的一大特點 物件導向程式設計的第一步 將屬性和方法封裝到乙個抽象的類中 外界使用類建立物件,然後讓物件呼叫方法物件方法的細節都被封裝在類的內部 class person 人類 def init self,name,weight self.name name self.weigh...