• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Python基础知识学习之类的继承

    一、继承的格式

    类的继承格式如下,括号中的为父类名。

    class 类名(父类名):
     代码

    二、单继承

    下面我们让Man继承自Master类,并调用继承的showSkill方法。

    class Master():
        def __init__(self):
            self.skill='炒菜'
        def showSkill(self):
            print(self.skill)
    
    class Man(Master):
        pass
    
    man=Man()
    man.showSkill()
    

    炒菜

    三、多继承

    我们可以在括号中写入多个父类,并用逗号隔开,就可以表示多继承。
    需要注意的是,如果父类中有同名的方法或属性被子类继承,子类优先继承第一个父类的方法。

    '''
    测试python多继承
    多继承时,若父类有同名的属性或方法,则优先继承先继承的父类
    '''
    
    class Master():
        def __init__(self):
            self.skill='炒菜'
        def showSkill(self):
            print(self.skill)
    
    class Bagger():
        def __init__(self):
            self.skill='乞讨'
        def showSkill(self):
            print(self.skill)
    
    class Man(Master,Bagger):
        pass
    
    man=Man()
    man.showSkill()
    

    炒菜

    四、重写父类方法

    python中重写父类方法不需要override等任何的关键字,直接把原来的方法重写一遍就好。

    class Master():
        def __init__(self):
            self.skill='炒菜'
            print("Master初始化完毕")
        def showSkill(self):
            print(self.skill)
    
    class Bagger():
        def __init__(self):
            self.skill='乞讨'
            print("Bagger初始化完毕")
        def showSkill(self):
            print(self.skill)
    
    #重写父类的方法
    class Man(Master,Bagger):
        #重写__init__方法时,并不会调用父类的__init方法
        def __init__(self):
            #重写父类的属性skill
            self.skill='飞天'
        def showSkill(self):
            print("我的技能是:"+self.skill)
    
    man=Man()
    man.showSkill()
    

    我的技能是:飞天

    五、打印继承关系

    通过__mro__()方法我们可以得到当前类继承的所有类。

    class Master():
        def __init__(self):
            self.skill='炒菜'
        def showSkill(self):
            print(self.skill)
    
    class Bagger(Master):
        pass
    
    class Man(Bagger):
        pass
    
    man=Man()
    print(Man.__mro__)
    

    六、调用父类方法

    我们可以通过super().方法名,来调用父类中的 方法,哪怕该方法在子类中被重写了。

    class Master():
        def __init__(self):
            self.skill='炒菜'
        def showSkill(self):
            print(self.skill)
    
    class Man(Master):
        def __init__(self):
            self.skill='吃饭'
        def showSkill(self):
            print(self.skill)
            super().__init__()
            super().showSkill()
    
    man=Man()
    man.showSkill()
    

    吃饭
    炒菜

    七、私有属性与方法

    我们可以在方法或属性名前加上 __ 来表示私有,在类的继承中,只有父类的私有方法无法被继承,其他属性与方法都将被继承,但私有属性不能在子类中直接访问,但我们可以同过继承的父类公有方法来对其访问。
    下面我们定义私有属性money,并创建共有方法set_money与get_money从子类中对其进行访问。

    class Master():
        #在属性或方法面前加__,表示访问权限为私有
        __money=100000
        def __init__(self):
            pass
        #设置为私有方法,无法被继承
        def __showMoney(self):
            print(self.__money)
        #使子类可以通过共有方法访问私有属性
        def get_money(self):
            return self.__money
        def set_money(self,money):
            self.__money=money
    
    class Man(Master):
        pass
    
    man=Man()
    print("原来的money:"+man.get_money().__str__())
    man.set_money(12)
    print("后来的money:"+man.get_money().__str__())
    

    原来的money:100000
    后来的money:12

    到此这篇关于Python基础知识学习之类的继承的文章就介绍到这了,更多相关python类的继承内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • python编写接口测试文档(以豆瓣搜索为例)
    • Python3接口性能测试实例代码
    • python面向对象之类的继承详解
    • Python正确重载运算符的方法示例详解
    • python接口,继承,重载运算符详解
    上一篇:Django实现聊天机器人
    下一篇:Django集成富文本编辑器summernote的实现步骤
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Python基础知识学习之类的继承 Python,基础,知识学习,之类,