python3基础之类的继承

    上一篇感受了一把python类的使用,对类有了一定的认识。提到类就不能不说类的继承了。类的继承可以实现类的复用,大大提高效率。接下来就研究一下python类的继承是怎样的?

    首先了解一下什么叫继承?比如说人是一个类,人有身高体重等属性,有走路说话等行为。男人也是一个类具有人类的属性和行为。为了不为男人类重复写这些属性和行为(方法),我们可以让男人类继承于人类,这样男人类就有了人类的属性和方法了。这样人类就是男人类的父类,男人类就是人类的子类。继承类的写法如下:

    image.png

    类的继承只需要在创建类时,在类名后面加个小括号,括号里填上要继承的类的名字。Child类继承于Parent类就拥有了Parent类的属性和方法了。测试一下:

    image.png

    从测试代码中可以看到,虽然在定义Child类时没有定义getP1函数,但是child1对象却可以直接使用getP1函数,这就说明child类继承了Parent类的属性和方法。不过这里让我感到奇怪的是在构建child1时,并没有调用父类的初始化函数(没有打印构造Parent)。原来python里要调用父类的初始化函数需要显式调用( Parent.__init__(self) ),或者子类不写__init__函数。

    image.png


    python也支持多重继承,也就是一个类可以有多个父类。这样子类就能同时拥有多个父类的属性和方法了。多重继承测试代码:

image.png

多重继承的写法就是在小括号里有多个类名,类名之间用逗号隔开。这样子类一下子就拥有了这些类的属性和方法,但是如果父类中有同名函数时,子类调用的是哪个函数呢?为此我做了个试验:

    image.png

image.png

image.png

第一次在两个父类和子类中都定义了getP这个函数,执行的是子类自己的getP。第二次和第三次注释掉子类的getP函数,两次分别调用了Parent和Parent2的getP函数。后两次的区别就在于继承时两个父类的顺序不同。由此可见调用函数时先找子类本身,然后按照继承的父类顺序从左到右查找。

演示站
上一篇:python3基础之类的初体验
下一篇:python3基础之如何重载运算符(实例)

发表评论