1. 程式人生 > >python - 一個物件的屬性可以是另外一個類建立的物件

python - 一個物件的屬性可以是另外一個類建立的物件

示例:士兵射擊
需求:
1.士兵瑞恩有一把AK47
2.士兵可以開火(士兵開火扣動的是扳機)
3.槍 能夠 發射子彈(把子彈發射出去)
4.槍 能夠 裝填子彈 --增加子彈的數量
分析:

 類:
  Soldier                Gun
  -------                -----------
 屬性:
	name                    model
	gun                     bullet_count
-------------------------------------
__init__(self)          __init__(self)
方法:
fire(self)              add_bullet(self,count)
                        shoot(self)


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
        # 發射子彈 子彈數量變化
        self.bullet_count -= 1
        print('[%s] tututu~ [%d]' %(self.model,self.bullet_count))

class Soldier:
    def __init__(self,name):
        self.name = name
        # 槍(新兵沒有槍)
        self.gun = None

    def fire(self):
        # 1.判斷士兵是否有槍
        if self.gun == None:
            print('[%s] 還沒有槍..' %(self.name))
            return
        print('go!!![%s]' %(self.name))
        self.gun.add_bullet(50)
        self.gun.shoot()


# 建立槍物件
ak = Gun('ak47')
# 測試槍的方法有沒有實現
# ak.add_bullet(50) 
# ak.shoot()
# ak.shoot()

# 建立士兵物件
ryan = Soldier('Ryan')
# 通過主程式的賦值語句,士兵有槍了
ryan.gun = ak
ryan.fire()
#print(ryan.gun)

在這裡插入圖片描述