补充继承里面的知识,MRO
- MRO就是多继承中,用于保存继承顺序的一个列表
- python本身采用c3算法来多多继承的菱形继承进行计算的结果
- MRO列表的计算原则:
1.子类永远在父类前面
2.如果多个父类,则根据继承语法中括号内类的书写顺序存放
3.如果多个类继承勒同一个父类,孙子类中只会选取继承语法括号中第一个父类的父类
多态
-多态是同一事物多种形态,文件也有多种形态:文件,文本文件,可执行文件
-多态不是语法,是一种设计思想
-多态:同一事物的多种形态
多态性
什么是多态性呢?这里注意了,多态性和多态是两个不同的概念。
多态性是指具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数。在面向对象方法中一般是这样表述多态性:向不同的对象发送同一条消息,不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。
简单说就是:
‘同一种调用方式,出现不同的执行效果’
#多态性依赖于继承
##多态性:定义统一的接口
def func(obj):
print(obj.__len__())
func('hello')
5
func([1,2,3,4])
4
func((1,2,3,4))
4
#都是调用同一个函数,执行的结果却不一样
#问题就在于函数的参数‘obj’上面,这个参数是多态性的关键,他是多态性的具体表现形式
总的来说,在python中,多态性是一个接口(函数func),多种实现(如 func(‘hello’))
多态性的好处
上面的例子看到了,我们并没有怎加函数中的代码,但是在下面通过多态性实现了多种功能,好处是
- 增加了程序的灵活性
以不变应万变,不论对象千变万化,使用者都是同一种形式去调用, - 增加了程序的可扩展性
通过继承父类创建一个新的类,在后面的使用中,使用者无需更改自己的代码,而且调用方法也没有多少变化
Mixin设计模式
- Mixin设计主要采用多继承的方式对类的功能进行扩展
- 使用Mixin实现多继承的时候应该需要小心点
-首先他只能表示某一个单一的功能,而不是整个类
-如果需要实现多个功能,则需要多写点Mixin
-Mixin不能依赖于子类的实现
-即使子类不继承Mixin,也能照样工作,只不过缺少了一些功能 - 优点
-使用Mixin可以在不对类进行任何修改的情况下,扩充功能
-可以方便的组织和维护不同功能组件的划分
-可以根据需要任意调整功能类的组合
-可以少创建点不必要的类,以免导致类的继承混乱
在python中有很多适用于面向对象的内置函数,这些函数都是很有用的,可以去了解一下!