python基础课OOP(3)_不会敲代码的码农-superxjz_新浪博客

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):
        #首先调用父类构造函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值