物件導向封裝案例 士兵突擊

2021-10-23 08:57:49 字數 2367 閱讀 6941

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

需求

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

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

開發士兵類

假設每乙個新兵都沒有槍

定義沒有初始值的屬性

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

fire 方法需求

**實現

class

gun:

"""槍類"""

def__init__

(self, model)

:# 1.槍的型號

self.model = model

# 2.子彈的數量

self.bullet_count =

0def

add_bullet

(self, count)

:# count表示發射子彈的數量

"""新增子彈"""

self.bullet_count += count

defshoot_bullet

(self)

:"""發射子彈"""

# 1.判斷子彈數量

if self.bullet_count <=0:

print

('[%s] 沒有子彈了...'

% self.model)

return

# 2.發射子彈, -1

self.bullet_count -=

1# 3.提示發射資訊

print

('[%s] 突突突... [%s]'

%(self.model, self.bullet_count)

)class

soldier

:"""士兵類"""

def__init__

(self, name)

:# 1.士兵的姓名

self.name = name

# 2.士兵的槍 -> 新兵沒有槍(在定義屬性時,如果不知道設定什麼初始值,可以設定為 none)

self.gun =

none

deffire

(self)

:"""士兵**"""

# 1.判斷士兵有沒有槍

# if self.gun == none:

# 在 python中針對none比較時,建議使用 is 判斷

if self.gun is

none

:print

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

% self.name)

# 2.高喊口號

print

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

% self.name)

# 3.讓槍裝填子彈

self.gun.add_bullet(50)

# 讓士兵的槍裝填子彈(乙個類的屬性作為另乙個類的物件)

# 4.讓槍發射子彈

self.gun.shoot_bullet(

)# 讓士兵的槍發射子彈(乙個類的屬性作為另乙個類的物件)

# 1.建立槍物件

ak47 = gun(

'ak47'

)# 2.建立許三多物件

xusanduo = soldier(

'許三多'

)xusanduo.gun = ak47

xusanduo.fire(

)

身份運算子

身份運算子用於比較兩個物件的記憶體位址是否一致—是否是同乙個物件的引用

運算子描述

例項is

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

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

is not

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

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

is 與 ==區別:

>>

> a=[1

,2,3

]>>

> b=[1

,2,3

]>>

> b is a

false

>>

> b== a

true

python物件導向封裝 士兵突擊

重點理解 乙個物件的屬性,可以是另乙個類建立的物件。專案需求 1 士兵許三多有一把ak47 2 士兵可以 3 槍能夠發射子彈 4 槍能夠裝填子彈 專案分析 根據專案需求,可以提煉出兩個類,槍和人。槍類的屬性有 名字 子彈數量 槍類的方法有 裝填子彈 射出子彈 人類的屬性有 名字 槍 人類的方法有 因...

士兵突擊的封裝

class gun def init self,model,bullet count 槍的型號 self.model model self.bullet count bullet count def str self return 槍的型號 s n剩餘子彈數量 d self.model,self.b...

物件導向封裝案例

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