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脚本操作文件的小示例分享
Aug 27 Python
Python简单定义与使用二叉树示例
May 11 Python
使用python进行拆分大文件的方法
Dec 10 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
Jan 29 Python
Django框架设置cookies与获取cookies操作详解
May 27 Python
Python3实现汉语转换为汉语拼音
Jul 08 Python
使用wxpy实现自动发送微信消息功能
Feb 28 Python
Python3 hashlib密码散列算法原理详解
Mar 30 Python
python 引用传递和值传递详解(实参,形参)
Jun 05 Python
如何在Windows中安装多个python解释器
Jun 16 Python
详解anaconda离线安装pytorchGPU版
Sep 08 Python
python爬虫爬取某网站视频的示例代码
Feb 20 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面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
php中如何判断一个网页请求是ajax请求还是普通请求
2013/08/10 PHP
javascript:void(0)的真正含义实例分析
2008/08/20 Javascript
网页中的图片的处理方法与代码
2009/11/26 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
JavaScript变量声明详解
2014/11/27 Javascript
node.js中的fs.chmodSync方法使用说明
2014/12/18 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
13个PHP函数超实用
2015/10/21 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
2017/04/14 Javascript
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
详解JS中的柯里化(currying)
2017/08/17 Javascript
使用puppeteer爬取网站并抓出404无效链接
2018/12/20 Javascript
详解JavaScript之ES5的继承
2020/07/08 Javascript
Python中的引用和拷贝浅析
2014/11/22 Python
举例详解Python中的split()函数的使用方法
2015/04/07 Python
Python实现自动发送邮件功能
2021/03/02 Python
python3 pandas 读取MySQL数据和插入的实例
2018/04/20 Python
详解Django解决ajax跨域访问问题
2018/08/24 Python
python多个模块py文件的数据共享实例
2019/01/11 Python
Python实现的删除重复文件或图片功能示例【去重】
2019/04/23 Python
python3获取当前目录的实现方法
2019/07/29 Python
python入门之基础语法学习笔记
2020/02/08 Python
Python关于反射的实例代码分享
2020/02/20 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
Paradox London官方网站:英国新娘鞋婚礼鞋品牌
2019/08/29 全球购物
2014新年元旦活动策划方案
2014/02/18 职场文书
煤矿班组长竞聘书
2014/03/31 职场文书
国际贸易实训报告
2014/11/05 职场文书
感恩父母主题班会
2015/08/12 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
新手入门Mysql--概念
2021/06/18 MySQL
python双向链表实例详解
2022/05/25 Python