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正则匹配查询港澳通行证办理进度示例分享
Dec 27 Python
Python实现全局变量的两个解决方法
Jul 03 Python
python海龟绘图实例教程
Jul 24 Python
给Python中的MySQLdb模块添加超时功能的教程
May 05 Python
在Django的通用视图中处理Context的方法
Jul 21 Python
Python的净值数据接口调用示例分享
Mar 15 Python
Python实现判断一个字符串是否包含子串的方法总结
Nov 21 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
Aug 06 Python
从0到1使用python开发一个半自动答题小程序的实现
May 12 Python
Django 允许局域网中的机器访问你的主机操作
May 13 Python
Python基础之Socket通信原理
Apr 22 Python
python字典的元素访问实例详解
Jul 21 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
建立动态的WML站点(三)
2006/10/09 PHP
关于laravel框架中的常用目录路径函数
2019/10/23 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
一个简单的Ext.XTemplate的实例代码
2012/03/18 Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
2012/05/03 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
VUEJS实战之利用laypage插件实现分页(3)
2016/06/13 Javascript
JS实现的自定义水平滚动字体插件完整实例
2016/06/17 Javascript
Angular2内置指令NgFor和NgIf详解
2016/08/03 Javascript
利用D3.js实现最简单的柱状图示例代码
2016/12/09 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
2019/05/28 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
antd design table更改某行数据的样式操作
2020/10/31 Javascript
原生微信小程序开发中 redux 的使用详解
2021/02/18 Javascript
Python实现端口复用实例代码
2014/07/03 Python
Python中字典和JSON互转操作实例
2015/01/19 Python
python中Genarator函数用法分析
2015/04/08 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
四年级数学教学反思
2014/02/02 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
毕业生求职信范文
2014/06/29 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
会计人员岗位职责
2015/02/03 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
美丽人生观后感
2015/06/03 职场文书
基于PyQt5制作一个群发邮件工具
2022/04/08 Python
Docker官方工具docker-registry案例演示
2022/04/13 Servers