总结
1.类的继承
-
继承是一种创建类的方法,一个类可以继承来自一个或多个父类,原始类称为基类或超类;
-
继承可以很方便的帮助子类拥有父类的属性和方法,减少代码冗余,子类可以定义自己的方法和属性,也可以覆盖父类的方法和属性;
-
实现继承:指使用基类的属性和方法而无需额外编码的能力;
-
接口继承:指仅使用属性和方法的名称、但是子类必须提供实现的能力(子类重构父类方法);
2.属性查找顺序
-
父类的私有属性无法被子类访问;
-
属性的查找顺序:先从对象自身的
__dict__
中查找->然后从对象所在类的__dict__
中查找->然后从父类的__dict__
中查找,直至找到或者报错没有找到;
3.方法重写
-
如果你的父类方法的功能不能满足你的需求,就可以在子类重写你父类的方法;
-
子类可以覆盖父类的方法,且可以在覆盖的方法中调用父类的方法;
-
super()
函数是用于调用父类(超类)的一个方法, Python 3 可以使用直接使用super().xxx
代替super(Class, self).xxx
;
4.装饰器
-
装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等;
-
python装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器的返回值也是一个函数对象(函数的指针);
-
概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能,也称之为扩展功能;
5.Mixin
-
Mixin是一种设计模式,通过多继承的方式对类的功能进行增强;
-
Mixin可以在不修改任何源代码的情况下,对已有类进行扩展;
-
可以根据需要使用已有的功能进行组合,来实现“新”类;
-
还能很好的避免类继承的局限性,因为新的业务需要可能就需要创建新的子类;
6.Mixin类的注意点
-
在Mixin类中,不能写初始化的
__init__方法
,因为Mixin类不做为独立类使用; -
Mixin类原则上必须作为其他类的基类,实现其他类的功能增强;
-
Mixin类的基类必须也是Mixin类; 使用Mixin方式增强功能的的类,必须将Mixin类写在继承列表的第一个位置;
-
Mixin比decorator更加强大;