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数据结构之二叉树的建立实例
Apr 29 Python
Python os模块介绍
Nov 30 Python
Python的randrange()方法使用教程
May 15 Python
python脚本实现xls(xlsx)转成csv
Apr 10 Python
在win和Linux系统中python命令行运行的不同
Jul 03 Python
听歌识曲--用python实现一个音乐检索器的功能
Nov 15 Python
用python的turtle模块实现给女票画个小心心
Nov 23 Python
浅谈图像处理中掩膜(mask)的意义
Feb 19 Python
PythonPC客户端自动化实现原理(pywinauto)
May 28 Python
学习python需要有编程基础吗
Jun 02 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
Feb 03 Python
Python如何导出导入所有依赖包详解
Jun 08 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的计数器程序
2006/10/09 PHP
DedeCMS dede_channeltype表字段注释
2010/04/07 PHP
PHP 开发环境配置(Zend Server安装)
2010/04/28 PHP
php设计模式 Composite (组合模式)
2011/06/26 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
2018/07/20 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
2007/04/21 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
优化RequireJS项目的相关技巧总结
2015/07/01 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
2016/03/01 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
Bootstrap3 datetimepicker控件使用实例
2016/12/13 Javascript
浅谈javascript中的 “ && ” 和 “ || ”
2017/02/02 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
基于jquery的on和click的区别详解
2018/01/15 jQuery
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
2019/06/27 Javascript
js实现转动骰子模型
2019/10/24 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
vue插槽slot的简单理解与用法实例分析
2020/03/14 Javascript
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
Python读写文件方法总结
2015/06/09 Python
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
python3+dlib实现人脸识别和情绪分析
2018/04/21 Python
TensorFlow的权值更新方法
2018/06/14 Python
使用django和vue进行数据交互的方法步骤
2019/11/11 Python
python装饰器代替set get方法实例
2019/12/19 Python
基于PyInstaller各参数的含义说明
2021/03/04 Python
英国网上电器商店:Electricshop
2020/03/15 全球购物
行政助理的职责
2013/11/14 职场文书
动物科学专业毕业生的自我评价
2013/11/29 职场文书
追讨欠款律师函
2015/05/27 职场文书
SpringBoot整合阿里云视频点播的过程详解
2021/12/06 Java/Android