继承/多重继承/鸭子函数/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__

鸭子类型

更加优雅的调用父类中的方法

哪怕父类被更换,也不用担心

 

posted on 2018-03-10 17:17  透过代码看世界  阅读(221)  评论(0编辑  收藏  举报

导航