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中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 Python
Python中表达式x += y和x = x+y 的区别详解
Jun 20 Python
python实现数据预处理之填充缺失值的示例
Dec 22 Python
Anaconda2 5.2.0安装使用图文教程
Sep 19 Python
在python 中实现运行多条shell命令
Jan 07 Python
解决Pycharm界面的子窗口不见了的问题
Jan 17 Python
Python生命游戏实现原理及过程解析(附源代码)
Aug 01 Python
Numpy对数组的操作:创建、变形(升降维等)、计算、取值、复制、分割、合并
Aug 28 Python
Pytorch实现神经网络的分类方式
Jan 08 Python
Python turtle库的画笔控制说明
Jun 28 Python
Python unittest discover批量执行代码实例
Sep 08 Python
Python try except else使用详解
Jan 12 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
PHP获取当前执行php文件名的代码
2017/03/02 PHP
PHP判断函数是否被定义的方法
2019/06/21 PHP
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
2014/10/17 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
javascript中setTimeout使用指南
2015/07/26 Javascript
jQuery实现为控件添加水印文字效果(附源码)
2015/12/02 Javascript
js实现上传图片及时预览
2016/05/07 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
关于Function中的bind()示例详解
2016/12/02 Javascript
jQuery遍历节点方法汇总(推荐)
2017/05/13 jQuery
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
Vue中全局变量的定义和使用
2019/06/05 Javascript
解决layui的input独占一行的问题
2019/09/10 Javascript
js实现简易计算器功能
2019/10/18 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
python使用win32com库播放mp3文件的方法
2015/05/30 Python
Python用imghdr模块识别图片格式实例解析
2018/01/11 Python
Python多线程原理与用法详解
2018/08/20 Python
举例讲解Python常用模块
2019/03/08 Python
python英语单词测试小程序代码实例
2019/09/09 Python
Python pandas库中的isnull()详解
2019/12/26 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
谷歌浏览器小字体处理方案即12px以下字体
2013/12/17 HTML / CSS
WiFi云数码相框:Nixplay
2018/07/05 全球购物
Strathberry苏贝瑞中国官网:西班牙高级工匠手工打造
2020/10/19 全球购物
大学生先进事迹材料
2014/02/16 职场文书
职业生涯规划书范文
2014/03/10 职场文书
答辩状格式范本
2015/05/22 职场文书
使用css样式设计一个简单的html登陆界面的实现
2021/03/30 HTML / CSS
微信小程序和php的登录实现
2021/04/01 PHP