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

鸭子类型

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

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

 

转载于:https://www.cnblogs.com/taoge188/p/8540760.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值