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


Posted in Python onMay 31, 2021

一、继承的格式

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

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 相关文章推荐
用Python中的__slots__缓存资源以节省内存开销的方法
Apr 02 Python
Python求导数的方法
May 09 Python
Django imgareaselect手动剪切头像实现方法
May 26 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
May 03 Python
浅谈对yield的初步理解
May 29 Python
matlab中实现矩阵删除一行或一列的方法
Apr 04 Python
python leetcode 字符串相乘实例详解
Sep 03 Python
Python基础教程之异常详解
Jan 10 Python
Python实现统计英文文章词频的方法分析
Jan 28 Python
春节到了 教你使用python来抢票回家
Jan 06 Python
python如何实现读取并显示图片(不需要图形界面)
Jul 08 Python
Python+pyftpdlib实现局域网文件互传
Aug 24 Python
Django实现聊天机器人
Python趣味挑战之教你用pygame画进度条
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 #Python
解决pytorch读取自制数据集出现过的问题
Python爬虫基础初探selenium
只用40行Python代码就能写出pdf转word小工具
pytorch 如何把图像数据集进行划分成train,test和val
May 31 #Python
You might like
DEDECMS首页调用图片集里的多张图片
2015/06/05 PHP
PHP简单获取随机数的常用方法小结
2017/06/07 PHP
鼠标图片振动代码
2006/07/06 Javascript
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
javascript动态加载二
2012/08/22 Javascript
使用jQuery.fn自定义jQuery翻页插件
2013/01/20 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
详解js中构造流程图的核心技术JsPlumb
2015/12/08 Javascript
javascript函数自动执行常用方法汇总
2016/03/28 Javascript
模板视图和AngularJS之间冲突的解决方法
2016/11/22 Javascript
nodejs redis 发布订阅机制封装实现方法及实例代码
2016/12/15 NodeJs
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
Bootstrap3下拉菜单的实现
2017/02/22 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
原生js实现仿window10系统日历效果的实例
2017/10/31 Javascript
加载 vue 远程代码的组件实例详解
2017/11/20 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
2018/04/28 jQuery
详解vue指令与$nextTick 操作DOM的不同之处
2018/08/02 Javascript
使用D3.js构建实时图形的示例代码
2018/08/28 Javascript
详解webpack2异步加载套路
2018/09/14 Javascript
Javascript中parseInt的正确使用方式
2018/10/17 Javascript
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
2019/04/08 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
python3实现全角和半角字符转换的方法示例
2017/09/21 Python
Python3几个常见问题的处理方法
2019/02/26 Python
Python使用type关键字创建类步骤详解
2019/07/23 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
Python脚本导出为exe程序的方法
2020/03/25 Python
python读取配置文件方式(ini、yaml、xml)
2020/04/09 Python
python opencv肤色检测的实现示例
2020/12/21 Python
Michael Kors英国官网:美国奢侈品品牌
2019/11/13 全球购物
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
优秀求职自荐信怎样写
2013/12/18 职场文书
会展策划与管理专业大学生职业生涯规划
2014/02/07 职场文书
小学教师教学随笔
2015/08/14 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书