day16.组合

组合:给一个类的对象封装一个属性,这个属性是另一个类的对象

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血

  

原文地址:https://www.cnblogs.com/beriuta/p/9569486.html