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中处理列表之reverse()方法的使用教程
May 21 Python
Python实现简易端口扫描器代码实例
Mar 15 Python
python 提取key 为中文的json 串方法
Dec 31 Python
详解如何在Apache中运行Python WSGI应用
Jan 02 Python
Python 寻找局部最高点的实现
Dec 05 Python
使用 Python 处理3万多条数据只要几秒钟
Jan 19 Python
pycharm 对代码做静态检查操作
Jun 09 Python
Python判断远程服务器上Excel文件是否被人打开的方法
Jul 13 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
Oct 20 Python
如何通过python检查文件是否被占用
Dec 18 Python
用python自动生成日历
Apr 24 Python
ROS系统将python包编译为可执行文件的简单步骤
Jul 25 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
phpmyadmin操作流程
2006/10/09 PHP
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
php urlencode()与urldecode()函数字符编码原理详解
2011/12/06 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
2014/06/26 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
2014/10/27 PHP
详解Laravel5.6 Passport实现Api接口认证
2018/07/27 PHP
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
一样的table?不一样的table(可编辑状态table)
2012/09/19 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
跟我学习javascript的prototype原型和原型链
2015/11/18 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
2016/10/13 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
javaScript语法总结
2016/11/25 Javascript
vue-cli扩展多模块打包的示例代码
2018/04/09 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
vue 解决文本框被键盘遮住的问题
2019/11/06 Javascript
tensorflow 中对数组元素的操作方法
2018/07/27 Python
Python做智能家居温湿度报警系统
2018/09/25 Python
python 为什么说eval要慎用
2019/03/26 Python
Python读取stdin方法实例
2019/05/24 Python
Python占用的内存优化教程
2019/07/28 Python
python中的列表与元组的使用
2019/08/08 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
浅谈Python 函数式编程
2020/06/20 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
python中使用asyncio实现异步IO实例分析
2021/02/26 Python
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
办公室岗位职责
2014/02/12 职场文书
销售人才自我评价范文
2014/09/27 职场文书
党的群众路线教育实践活动个人自我剖析材料
2014/10/07 职场文书
家属慰问信
2015/02/14 职场文书
解决Vue+SpringBoot+Shiro跨域问题
2021/06/09 Vue.js
oracle设置密码复杂度及设置超时退出的功能
2022/06/28 Oracle