面向对象的三大特征:python
1、继承:函数
父类在继承中又称为基类,即基于这个父类而建立的新类,查看父类的方式: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列表查找。