组合:给一个类的对象封装一个属性,这个属性是另一个类的对象
class Gamrole: def __init__(self, nickname, ad, hd): self.nickname = nickname self.ad = ad self.hd = hd def attack(self,role): role.hp = role.hp - self.ad print('{}攻击了{}.{}掉了{}血,还剩{}血'.format(self.nickname, role.nickname, role.nickname, self.ad, role.hp)) def equip_weaon(self,w): #给人物封装一个武器属性,这个属性值是 Weapon类的一个对象 self.weapon = w #组合 class Weapon: def __init__(self, name, ad): self.name = name self.ad = ad def fight(self, name, ad): self.name = name self.ad = ad def fight(self, role1, role2): role2.hd = role2.hd - self.ad print('{}用{}攻击了{},{}掉了{}血,还剩{}血' .format(role1.nickname, self.name, role2.nickname, role2.nickname, self.ad, role2.hd)) p1 = Gamrole('盖伦',20, 500) p2 = Gamrole('剑豪', 100, 200) w1 = Weapon('大宝剑', 30) w2 = Weapon('武士刀', 80) p1.equip_weaon(w1) p1.weapon.fight(p1,p2) #盖伦用大宝剑攻击了剑豪,剑豪掉了30血,还剩170血