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计算三角函数之acos()方法的使用
May 15 Python
python实现的文件同步服务器实例
Jun 02 Python
Python的自动化部署模块Fabric的安装及使用指南
Jan 19 Python
IntelliJ IDEA安装运行python插件方法
Dec 10 Python
Python实现FTP文件传输的实例
Jul 07 Python
django如何自己创建一个中间件
Jul 24 Python
python mysql断开重连的实现方法
Jul 26 Python
基于python求两个列表的并集.交集.差集
Feb 10 Python
Python迭代器Iterable判断方法解析
Mar 16 Python
python 爬虫请求模块requests详解
Dec 04 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
Jan 21 Python
Python可视化神器pyecharts之绘制地理图表练习
Jul 07 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
使用composer命令加载vendor中的第三方类库 的方法
2019/07/09 PHP
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
一个可拖拽列宽表格实例演示
2012/11/26 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
2014/05/27 Javascript
js的[defer]和[async]属性
2014/11/24 Javascript
浅谈JS日期(Date)处理函数
2014/12/07 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
jquery操作select元素和option的实例代码
2016/02/03 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
jQuery阻止移动端遮罩层后页面滚动
2017/03/15 Javascript
json的结构与遍历方法实例分析
2017/04/25 Javascript
本地存储localStorage用法详解
2017/07/31 Javascript
JS脚本实现网页自动秒杀点击
2018/01/11 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
js计时事件实现圆形时钟
2020/03/25 Javascript
js实现蒙版效果
2020/01/11 Javascript
[56:56]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
Python转换时间的图文方法
2019/07/01 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
2019/10/30 Python
解决Python中报错TypeError: must be str, not bytes问题
2020/04/07 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
python实现与redis交互操作详解
2020/04/21 Python
什么是python的列表推导式
2020/05/26 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
CSS3中的opacity属性使用教程
2015/08/19 HTML / CSS
HTML5视频支持检测(检查浏览器是否支持视频播放)
2013/06/08 HTML / CSS
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
2016/03/15 HTML / CSS
雅诗兰黛(Estee Lauder)英国官方网站:世界顶级化妆品牌
2016/12/29 全球购物
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
database面试题
2013/03/28 面试题
酒店总经理岗位职责范本
2014/08/08 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
MySQL大小写敏感的注意事项
2021/05/24 MySQL