python 基础课OOP(3)
1-单继承和多继承
.单继承:每个类只能继承一个类
传承有序逻辑清晰语法简单隐患少
功能不能无限扩展,只能在当前唯一的继承连中扩展
.多继承:每个类允许继承多各类
类的功能扩展方便
继承关系混乱
class Fish():
def __init__(self,name):
self.name=name
def swim(self):
print('i am swimming')
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 work(self):
print('i am working')
class SuperMan(Person,Bird,Fish):
def __init__(self,name):
self.name=name
s=SuperMan('xiong')
s.fly()-----i am flying
s.swim()-------i am swimming
.菱形继承/钻石继承问题
多个子类继承自同一个父类,这些子类又被同一个类继承,于是继承关系图形成一个菱形图谱
关于多继承的MRO:
MRO就是多继承中,用于保存继承顺序的一个列表
python本身采用c3算法来解决多继承进行计算的结果
MRO计算原则:
子类永远在父类前面
如果多个父类,则根据继承语法中括号内类的书写顺序存放
如果多各类继承了同一个父类,子孙类中只会选取继承语法括号中第一个父类的父类
2-构造函数
.在对象进行实例化的时候,系统自动调用的一个函数叫做构造函数,通常此和拿书用来对实例对象进行初始化
.构造函数一定要有,如果没有,则自动向上查找,按照MRO顺序知道找到为止
class Person():
def __init__(self):
self.name=name
self.age=age
self.address='harbin'
print('hello')
#实例化一个人
p=Person()-----hello
class C(B):
def __init__(self,name):
#首先调用父类构造函数
1-单继承和多继承
.单继承:每个类只能继承一个类
传承有序逻辑清晰语法简单隐患少
功能不能无限扩展,只能在当前唯一的继承连中扩展
.多继承:每个类允许继承多各类
类的功能扩展方便
继承关系混乱
class Fish():
def __init__(self,name):
self.name=name
def swim(self):
print('i am swimming')
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 work(self):
print('i am working')
class SuperMan(Person,Bird,Fish):
def __init__(self,name):
self.name=name
s=SuperMan('xiong')
s.fly()-----i am flying
s.swim()-------i am swimming
.菱形继承/钻石继承问题
多个子类继承自同一个父类,这些子类又被同一个类继承,于是继承关系图形成一个菱形图谱
关于多继承的MRO:
MRO就是多继承中,用于保存继承顺序的一个列表
python本身采用c3算法来解决多继承进行计算的结果
MRO计算原则:
子类永远在父类前面
如果多个父类,则根据继承语法中括号内类的书写顺序存放
如果多各类继承了同一个父类,子孙类中只会选取继承语法括号中第一个父类的父类
2-构造函数
.在对象进行实例化的时候,系统自动调用的一个函数叫做构造函数,通常此和拿书用来对实例对象进行初始化
.构造函数一定要有,如果没有,则自动向上查找,按照MRO顺序知道找到为止
class Person():
def __init__(self):
self.name=name
self.age=age
self.address='harbin'
print('hello')
#实例化一个人
p=Person()-----hello
class C(B):
def __init__(self,name):
#首先调用父类构造函数