python - 一個物件的屬性可以是另外一個類建立的物件
阿新 • • 發佈:2019-01-03
示例:士兵射擊
需求:
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)