轻松学会python面向对象第5篇---什么是继承

任何一门编程语言,其根本目的都是用抽象的方式来描述具体的世界,也就是建模。

现实中的世界,是非常复杂的,为了应对这种复杂性,理所应当的引入了继承。

狗是人类的好朋友,在一个游戏里,需要创建很多狗的对象,也就是需要定义很多狗的类。前面的文章里,我定义个Dog类,泛指狗,但实际上狗也分很多种类,比如猎狗,哈士奇,金毛。。。。。。。

不同种类的狗,有不同的技能,不同的用途,如果只定义一个Dog类,就如同一个大杂烩,所有的代码都要写在一个类里,太臃肿。所以,你应当想到,对每一种狗针对性的创建一个类:

  1. HuntDog(猎狗)
  2. HuskyDog(哈士奇)
  3. GoldenDog(金毛)

由于不同种类狗之间存在差异性,我们决定定义三个狗的类,但是,他们也存在相同之处,比如姓名,年龄,体重,任何一只狗都有这3个属性,那么每次定义的时候,都要把这些属性的初始化过程写一遍么?

看到这里,就已经接触到继承的核心了,继承这种机制,并不像引力一样天然存在的,它纯粹是出于管理需要被人为创造出来的。最简单,最直白的理解,继承可以帮助我们节省代码。

class Dog():
    def __init__(self, _name, _age):
        self.name = _name
        self.age = _age

    def eat_moon(self):
        print("天狗吃月")


class HuntDog(Dog):
    pass

class HuskyDog(Dog):
    pass

class GoldenDog(Dog):
    pass

hunt = HuntDog('闪电', 4)
hunt.eat_moon()

这三个类都继承了Dog类,这样,他们就不必实现自己的__init__方法,不仅如此,还直接继承了Dog类的eat_moon方法,父类有的,子类都有。

你可以给猎狗增加狩猎方法,给哈士奇增加拆沙发方法,给金毛增加陪孩子游戏方法,正如前文所言,不同种类的狗有不同的功能,因此我们要分开定义,但他们又有相同之处,所以我定义一个父类,囊括他们的共性。

这便是用抽象的方式来描述具体的世界。

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案