Python中類的封裝:一個對象的屬性可以是另外一個類型創建的對象
需求如下:
士兵 許三多 有一把 AK47
士兵 可以 開火
槍 能夠 發射 子彈
槍 裝填 裝填子彈 —— 增加子彈數量
分析如下:
士兵 許三多 需要創建一個類:士兵類(Soldier),實例化出許三多這個對象,並且士兵的屬性有name和gun
士兵 可以 開火 說明士兵類有一個方法:fire(開火)
有一把 AK47 說明需要一個槍類,實例化出一個槍對象
AK47 增加子彈數量 說明槍類中有兩個屬性:model(槍類)和buttet_count(子彈數);
槍 能夠 發射 子彈 槍 裝填 裝填子彈 —— 增加子彈數量 說明Gun類有兩個方法:add_buttet(裝填子彈)和shoot(發射)。
代碼設計
class Gun:
def __init__(self,model):
#槍的類型
self.model = model
#槍的子彈數量
self.bullet_count = 0
def add_bullet(self,count):
self.bullet_count +=count
def shoot(self):
#判斷子彈數量
if self.bullet_count <= 0
print("[%s]沒有子彈了..."%self.model)
return
#子彈數量減1
self.bullet_count -=1
#打印提示信息
print("[%s]突。。。[%d]" %(self.model,self.bullet_count))
#對象實例化
AK = Gun("AK47")
#調用方法添加子彈
AK.add_bullet(50)
#射擊
AK.shoot()
#輸出
#[AK47]突。。。[49]
接下來定義一個士兵類:
代碼如下:
class Soldier:
def __init__(self,name):
self.name = name
self.gun = None
def Fire():
#判斷士兵是否有槍
if self.gun = None
print("我沒有槍")
return
#2高喊口號
print("%s衝啊"%self.name)
#3讓槍裝填子彈
self.gun.addbullet(50)
#4讓槍射擊
self.gun.shoot()
#實例化對象
xusanduo = Soldier("許三多")
xusanduo.gun = AK #此處將AK這個對象賦值給xusanduo 的gun屬性
xusanduo.fire()
文章參考鏈接
如有侵權,敬請聯繫刪除