python全栈脱产第24天------面向对象编程---继承

python全栈脱产第24天------面向对象编程---继承

定义:继承是一种新建类的方式,新建的类称之为子类,被继承的类称之为基类、父类、超类

   继承描述的是一种“遗传”的关系:子类可以重用父类的属性

   注意:1.在python中支持一个子类同时继承多个父类

      2.python中类分为两种:新式类:但凡继承object类,以及该类的子类都是新式类,在python3中默认继承object类

                 经典类:没有继承object类,以及子类都是经典类,之后python2中才分新式类与经典类

用处:减少代码冗余

  调用父类的方法来减少代码冗余:方式一:指名道姓地访问某一个类的函数

                  注意:1.该方式与继承是没有关系的  2.访问某一个类的函数,没有自动传值的效果

                    通过类名.加方法名加参数来调用

                方式二:只能在子类中使用  python2中:super(自己的类名,对象自己)python3中:super()

                    调用super()会得到一个特殊的对象,该特殊的对象是专门用来引用父类中的属性,完全参照mro表

                      注意:1.该方法与继承严格依赖与继承的mro列表  2.访问是绑定的方法,有自动传值的功能

                    super().方法名加参数

单继承背景下属性查找的顺序:对象-》对象的类-》父类-》....

多继承背景下属性查找的顺序:对象-》对象的类-》按照顺序从左到右的顺序一个个的分支的找下去

  出现菱形继承:新式类:广度优先查找,在最后一个分支查找*类,有mro方法可以查看mro列表

         经典类:深度优先查找,在第一个分支就查找*类