面向对象之继承

面向对象的三大特征:python

1、继承:函数

  1. 定义:继承是建立新类的方式,新建的类能够继承一个或多个父类(python中支持多继承)。
  2. 继承分为单继承(继承一个父类)和多继承(继承多个父类)
  3. 为何要用继承:在程序中,经过继承,能够获得父类的全部属性(包括数据属性、函数属性)。
  4. 查看继承:

父类在继承中又称为基类,即基于这个父类而建立的新类,查看父类的方式:spa

      Sun.__bases__()(查看Sun所继承的全部基类(父类))对象

      Sun.__base__()(从左到右查看第一个基类(即父类))继承

 

若是没有指定基类,python的类会默认继承object类,object是全部python类的基类,它提供了一些常见方法(如__str__)的实现。基础

 

2、继承与抽象object

抽象:抽取多个类中的共同部分,组成一个新的类。抽象最主要的做用是划分类别。程序

经过抽象:获得公共部分的属性,并放到一个类中,并做为父类。方法

经过继承:避免了重复代码。数据

 

先抽象再继承,继承是基于抽象的结果,确定先通过抽象的过程,再经过继承的方式去表达出抽象的结构

 

    分析:继承所生成的全部子类,只要基类中包含了这个父类,获得的子类确定包含这个基类中的全部属性,也就是说,这些子类都含有某些相同属性,那么咱们在考虑问题的时候,能够先把这些共同属性抽取出来,放到一个类中,并把这个类做为父类,进行继承,因此说现有抽象,再有继承。

 

 

4、派生:

定义:派生指的是子类继承某个父类,而且这个子类拥有本身独特的属性和方法(即子类类中得有本身的属性,不然与父类彻底相同),获得一个派生类。

 

重用:实质是子类中再次用到父类中定义的属性,包括方法和数据。

   重用的方式有两种:

1.父类名.父类中的方法名(指名道姓)

2.super().父类中的方法名

super().方法名的方式:supper().实质是相对于一个对象,会按照对象访问属性的方式进行访问,即有前后顺序。

(Python2中,super()的用法super(子类名,self) ).方法。参数为当前类,当前对象

super用在存在继承关系的子类中。

 

查找顺序:1.对象->->父类->父类的父类。。。。。

          2.若是一个子类由多个父类,那么查找到父类级别时,顺序是从左到右。

          3深度优先,沿着一条继承路径找到底,若是没有,再找其余继承路径

          4.当存在共同父类时,会产生菱形继承关系。菱形继承关秀:先深度优先,而后再广度优先。

          

 

 

 

经典类与新式类的区别:

全部直接继承或间接继承object的类,都是新式类。(object 称之为根类,意思是全部类都源自于object类,简单的说object提供了一些经常使用的基础操做。)

即全部类都属于新式类(在python3中)

python3中,默认全部类都是新式类;在python2中默认是经典类:不会自动继承object

在经典类中,属性的查找按照深度优先,一条路走到黑。(Python2中才有经典类。)

 

调用.mro()该方式,会显示查找顺序。

.super()访问父类时,按照mro列表查找。

相关文章
相关标签/搜索