python day17面向物件-組合
阿新 • • 發佈:2018-11-24
組合: 給一個類的物件封裝一個屬性,這個屬性是另一個類的物件.
class GameRole: def __init__(self, name, ad, hp): self.name = name self.ad = ad self.hp = hp def attack(self,p): p.hp = p.hp - self.ad print('%s 攻擊 %s,%s 掉了%s血,還剩%s血' %(self.name,p.name,p.name,self.ad,p.hp)) def armament_weapon(self,wea): self.wea = wea class Weapon: def __init__(self,name,ad): self.name = name self.ad = ad def fight(self,p1,p2): p2.hp = p2.hp - self.ad print('%s 用%s打了%s,%s 掉了%s血,還剩%s血'\ % (p1.name,self.name,p2.name,p2.name,self.ad,p2.hp))
p1 = GameRole('大陽哥',20,500)#給物件封裝屬性
p2 = GameRole('印度阿寧',50,200)
axe = Weapon('三板斧',60)
broadsword = Weapon('屠龍寶刀',100)
p1.armament_weapon(axe) #給p1這個屬性封裝axe這個物件,就可以呼叫axe裡的功能.
p1.wea.fight(p1,p2)可以直接呼叫Weapon這個類裡的函式,裡面傳了引數,因為wea裝了axe = Weapon('三板斧',60).
armament_weapon