单继承和多继承
- 单继承:每个类只能允许继承一个类
- 多继承:每个类允许继承多个类
单继承优缺点
- 传承有序逻辑清楚语法清晰语法简单隐患少
- 功能不能无限扩展,只能在当前唯一的继承链中扩展
多继承
- 优点:类的功能扩展方便
- 缺点:继承关系混乱
class Fish():
def __init__(self, name):
self.name = name
def swim(self):
print("i am swimng")
class Bird():
def __init__(self, name):
self.name = name
def fly(self):
print("i am flying")
class Person():
def __init__(self, name):
self.name = name
def worked(self):
print("working...")
class Superman(Person, Bird, Fish):
pass
s = Superman("lizi")
s.fly()
s.swim()
i am flying
i am swimng
菱形继承和钻石继承
- 继承图显示为一个菱形
- 会带来继承混乱的问题
- 关于多继承的MRO
- MRO就是多继承中,用于保存继承顺序的一个列表
- python本身采用C3算法,来对多继承进行计算的结果
- MRO列表计算原则
- 子类永远在父类前面
- 如果多个父类,根据参数顺序进行存放
- 如果多个类继承同一个父类,孙子类中只会选取继承语法括号中第一个父类的父类
#构造函数一定要有,如果没有会按照MRP顺序向上找父类的构造函数,直到找到位置
多态
- 就是同一个对象在不同情况下有不同的状态出现
- 多态不是语法,是一种设计思想。
- 多态性,一种调用方式,不同的执行效果
MIxin设计模式
- 主要采用多继承方式对类的功能进行扩展
- 不改变物种,只改变功能。