python_面向对象——对象间的组合关系
作者:互联网
# 由一堆组件构成一个完整的实体,组建本身独立,但又不能自己运行,必须跟宿主组合在一起,运行。 class Dog: #狗 def __init__(self,name,dog_type,attack_val): self.name = name #姓名 self.dog_type = dog_type #种类 self.attack_val = attack_val #攻击力 self.life_val = 100 #生命值 class Person: #人 def __init__(self,name,sex,attack_val): self.name = name #姓名 self.sex = sex #种类 self.attack_val = attack_val #攻击力 self.life_val = 100 #生命值 self.weapon = Weapon() #直接实例化武器类 def attack(self,obj,weapon_name,weapon_val): agg = weapon_val + self.attack_val #人的攻击力等于自身攻击力加上武器的攻击之和 life_val = obj.life_val - agg #狗的生命值减去人的攻击力,得到狗的剩余生命 print('{}使用{}攻击了{},{}损失{}点生命值,剩余生命值{}'.format(self.name,weapon_name,obj.name,obj.name,weapon_val,life_val)) class Weapon: #武器 def stick(self): #打狗棒 self.name = '打狗棒' self.attack_val = 25 return self.name,self.attack_val def knife(self,obj): #屠龙刀 self.name = '屠龙刀' self.attack_val = 40 def gun(self,obj): #AK47 self.name = 'AK47' self.attack_val = 40 d = Dog('小黑','哈士奇',20) #小黑 p = Person('wdc','男',30) #wdc weapon_name,weapon_val = p.weapon.stick() #使用对象p执行武器类中的方法:这里选择的武器是stick()方法下的"打狗棍" p.attack(d,weapon_name,weapon_val) #执行p对象下的attack(攻击)方法,人攻击狗(狗的对象,武器名称,武器攻击力)
标签:obj,组合,val,python,self,面向对象,attack,weapon,name 来源: https://www.cnblogs.com/wangdianchao/p/11843204.html