继承/多重继承/鸭子函数/supper
1.假设你正在参与一个魔幻类角色游戏的开发,公司需要你为这个游戏设计两个角色的类:
两个中有大量重复代码,是否能够只写一次? 抽象出一个更抽象的类,放公共代码
继承的意义是什么? 重用代码,方便代码的管理和修改
继承是复制变量空间吗? 不是
class Role: def __init__(self,name,level,blood): self.name=name self.level=level self.blood=blood def __str__(self): return "{cls}({name},{level},{blood})".format(cls=__class__.__name__, name=self.name, blood=self.blood, level=self.level) def fight(self): raise NotImplementedError('必须在子类中实现') class SwordMan(Role): def __init__(self,name,level,blood,attrack_power): Role.__init__(self,name,level,blood) self.attrack_power=attrack_power def fight(self): print('物理攻击!') class Magician(Role): def __init__(self,name,blood,level,magic_power): Role.__init__(self,name,blood,level) self.magic_power=magic_power def fight(self): print("魔法攻击!") def cure(self): print("治疗!") s=SwordMan('litao',20000,2000,'技击') print(s) s.fight()
重用父类的 __init__
鸭子类型
更加优雅的调用父类中的方法
哪怕父类被更换,也不用担心