面向对象中组合的用法
Posted whylinux
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象中组合的用法相关的知识,希望对你有一定的参考价值。
# 组合 一个类对象的属性值是另外一个类的对象 # 狗 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 -= 1 alex = 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攻击了jin alex.attack(jin) print(jin.hp) # alex使用武器的技能攻击jin alex.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 = day class 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) # 大作业,校园管理系统
以上是关于面向对象中组合的用法的主要内容,如果未能解决你的问题,请参考以下文章