zoukankan      html  css  js  c++  java
  • 继承/多重继承/鸭子函数/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__

    鸭子类型

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

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

  • 相关阅读:
    [IMX6]Android6.0移植和分析
    Android设计原则和设计模式
    Linux内核源码目录
    Android源码博客目录
    Android应用博客目录
    imx6的kernel3.4.15启动流程
    dd命令
    shell
    i.mx6 Android5.1.1 build解析
    git总结
  • 原文地址:https://www.cnblogs.com/taoge188/p/8540760.html
Copyright © 2011-2022 走看看