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  连接字符串(join %)
Sep 06 Python
详细解读tornado协程(coroutine)原理
Jan 15 Python
详解pytorch 0.4.0迁移指南
Jun 16 Python
Python秒算24点实现及原理详解
Jul 29 Python
python字典的常用方法总结
Jul 31 Python
用Python将Excel数据导入到SQL Server的例子
Aug 24 Python
python函数修饰符@的使用方法解析
Sep 02 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
Sep 15 Python
pytorch:model.train和model.eval用法及区别详解
Feb 20 Python
Pycharm如何导入python文件及解决报错问题
May 10 Python
详解Python中string模块除去Str还剩下什么
Nov 30 Python
python中Tkinter 窗口之输入框和文本框的实现
Apr 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
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
PHP中str_replace函数使用小结
2008/10/11 PHP
php实现的简易扫雷游戏实例
2015/07/09 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
Gambit vs CL BO3 第一场 2.13
2021/03/10 DOTA
javascript 导出数据到Excel(处理table中的元素)
2009/12/18 Javascript
JS动态创建Table,Tr,Td并赋值的具体实现
2013/07/05 Javascript
jquery文本框中的事件应用以输入邮箱为例
2014/05/06 Javascript
对之前写的jquery分页做下升级
2014/06/19 Javascript
JavaScript变量的作用域全解析
2015/08/14 Javascript
window.onerror()的用法与实例分析
2016/01/27 Javascript
利用jQuery实现一个简单的表格上下翻页效果
2017/03/14 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
2017/04/25 jQuery
Node.js五大应用性能技巧小结(必须收藏)
2017/08/09 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
2017/12/16 jQuery
小程序实现长按保存图片的方法
2019/12/31 Javascript
[03:28]2014DOTA2国际邀请赛 走近EG战队天才中单Arteezy
2014/07/12 DOTA
[01:29]2017 DOTA2国际邀请赛官方英雄手办展示
2017/03/18 DOTA
python判断windows隐藏文件的方法
2014/03/21 Python
Python读写Excel文件方法介绍
2014/11/22 Python
遗传算法python版
2018/03/19 Python
利用Python自动化操作AutoCAD的实现
2020/04/01 Python
英国最大的线上保健品零售商之一:Vitamin Planet
2016/12/01 全球购物
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
JAVA中运算符的分类及举例
2015/09/12 面试题
生物医学工程专业学生求职信范文分享
2013/12/14 职场文书
爱岗敬业演讲稿范文
2014/01/14 职场文书
生产部岗位职责范文
2014/02/07 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
投标承诺函格式
2015/01/21 职场文书
小学重阳节活动总结
2015/03/24 职场文书
高三化学教学反思
2016/02/22 职场文书
MySQL快速插入一亿测试数据
2021/06/23 MySQL
MySQL表类型 存储引擎 的选择
2021/11/11 MySQL