任何一门编程语言,其根本目的都是用抽象的方式来描述具体的世界,也就是建模。
现实中的世界,是非常复杂的,为了应对这种复杂性,理所应当的引入了继承。
狗是人类的好朋友,在一个游戏里,需要创建很多狗的对象,也就是需要定义很多狗的类。前面的文章里,我定义个Dog类,泛指狗,但实际上狗也分很多种类,比如猎狗,哈士奇,金毛。。。。。。。
不同种类的狗,有不同的技能,不同的用途,如果只定义一个Dog类,就如同一个大杂烩,所有的代码都要写在一个类里,太臃肿。所以,你应当想到,对每一种狗针对性的创建一个类:
由于不同种类狗之间存在差异性,我们决定定义三个狗的类,但是,他们也存在相同之处,比如姓名,年龄,体重,任何一只狗都有这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