# 组合 一个类对象的属性值是另外一个类的对象# 狗class Dog: def __init__(self, name, aggr, hp, kind): self.name = name self.aggr = aggr self.hp = hp self.kind = kind def bite(self, persion): persion.hp += self.aggr# 人class Persion: def __init__(self, name, aggr, hp, sex): self.name = name self.aggr = aggr self.hp = hp self.sex = sex self.money = 0 def attack(self, dog): dog.hp -= self.aggr def get_weapon(self, weapon): # 获得装备 if self.money >= weapon.price: self.money -= weapon.price # 对象没有这个属性值则会创建一个weapon属性值 self.weapon = weapon # 一个对象的属性值是另外一个类的对象 组合 self.aggr += weapon.aggr else: print('金币不足,请获取足够金币')# 武器class Weapon: def __init__(self, name, aggr, njd, price): self.name = name self.aggr = aggr self.njd = njd self.price = price def hand18(self, persion): # 武器技能 if self.njd > 0: persion.hp -= self.aggr * 2 self.njd -= 1alex = Persion('alex', 0.5, 100, '不详')jin = Dog('金老板', 100, 500, '不详')w = Weapon('打狗棒', 100, 3, 998)# alex充了1000金币alex.money += 1000# alex买了打狗棒alex.get_weapon(w)print(alex.weapon)print(alex.aggr)# alex攻击了jinalex.attack(jin)print(jin.hp)# alex使用武器的技能攻击jinalex.weapon.hand18(jin)print(jin.hp)# 上面的例子其实就默默的用到了组合# 组合:一个对象的属性值是另外一个类的对象 # alex.weapon 是 Weapon类的对象# 组合练习(谈到组合,就不只是一个类去解决问题)# 创建一个老师类# 老师有生日# 生日可以是一个类class Birthday: def __init__(self, year, mon, day): self.year = year self.mon = mon self.day = dayclass Teacher: def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex self.birthday = Birthday(1993, 8, 1) # 组合用法一个对象的属性值是另外一个类的对象#t = Teacher('why', 23, 'boy')print(t.birthday.year)# 大作业,校园管理系统