练习1:打电话
请使用面向对象思想描述下列情景:
小明使用手机打电话,还有可能使用座机....
class People:def __init__(self,name):self.name = namedef call_up(self,tool):print(self.name,end="")tool.call()class Tools:def __init__(self,way):self.way = waydef call(self):print(f"使用{self.way}通话")zs = People("张三")
ls = People("李四")
phone = Tools("手机")
landline = Tools("座机")
zs.call_up(phone)
ls.call_up(landline)
练习2:游戏角色系统
玩家攻击敌人,敌人受伤(头顶爆字,减少血量),还有可能死亡(加分).
敌人攻击玩家,玩家受伤(碎屏,减少血量),还有可能死亡(充值).
体会:
攻击完全相同
受伤部分相同
死亡完全不同
要求:
增加了其他角色,敌人/玩家不变
class Role:def __init__(self, hp=0, atk=0):self.hp = hpself.atk = atkdef attack(self, target):print("发起攻击")target.get_hurt(self.atk)def get_hurt(self, other_atk):self.hp -= other_atkif self.hp <= 0:self.death()def death(self):passclass Player(Role):def get_hurt(self, other_atk):print("碎屏")super().get_hurt(other_atk)def death(self):print("充值")class Enemy(Role):def get_hurt(self, other_atk):print("头顶爆字")super().get_hurt(other_atk)def death(self):print("加分")# --------------测试--------------
p = Player(200, 50)
e = Enemy(100, 10)
p.attack(e)
e.attack(p)p.attack(e)