Python中類的封裝:一個對象的屬性可以是另外一個類型創建的對象

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()



文章參考鏈接
如有侵權,敬請聯繫刪除

發佈了26 篇原創文章 · 獲贊 7 · 訪問量 1792
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章