乙個物件的屬性可以是另外乙個類建立的物件需求
士兵許三多有一把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:
('[%s] 沒有子彈了...'
% self.model)
return
# 2.發射子彈, -1
self.bullet_count -=
1# 3.提示發射資訊
('[%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
('[%s] 還沒有槍...'
% self.name)
# 2.高喊口號
('衝啊...[%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...