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多线程http下载实现示例
Dec 30 Python
浅析python 中__name__ = '__main__' 的作用
Jul 05 Python
Python加密方法小结【md5,base64,sha1】
Jul 13 Python
Python返回数组/List长度的实例
Jun 23 Python
python使用xlsxwriter实现有向无环图到Excel的转换
Dec 12 Python
Python queue队列原理与应用案例分析
Sep 27 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
Nov 16 Python
django 实现简单的插入视频
Apr 07 Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 Python
Pytorch之扩充tensor的操作
Mar 04 Python
Python list去重且保持原顺序不变的方法
Apr 03 Python
Python中基础数据类型 set集合知识点总结
Aug 02 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
推荐一篇入门级的Class文章
2007/03/19 PHP
PHP加密扩展库Mcrypt安装和实例
2013/11/10 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
yii去掉必填项中星号的方法
2015/12/28 PHP
php微信公众号开发之秒杀
2018/10/20 PHP
innerHTML 和 getElementsByName 在IE下面的bug 的解决
2010/04/09 Javascript
jQuery 选择表格(table)里的行和列及改变简单样式
2012/12/15 Javascript
如何使Chrome控制台支持多行js模式——意外发现
2013/06/13 Javascript
Js实现网页键盘控制翻页的方法
2014/10/30 Javascript
javascript中数组array及string的方法总结
2014/11/28 Javascript
ES6概念 ymbol.for()方法
2016/12/25 Javascript
NodeJs通过async/await处理异步的方法
2017/10/09 NodeJs
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
2018/04/03 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
vue组件中的样式属性scoped实例详解
2018/10/30 Javascript
Python实现3行代码解简单的一元一次方程
2014/08/18 Python
在Django中创建第一个静态视图
2015/07/15 Python
Pycharm学习教程(4) Python解释器的相关配置
2017/05/03 Python
Python实现求数列和的方法示例
2018/01/12 Python
Python+tkinter使用40行代码实现计算器功能
2018/01/30 Python
Python中文件的读取和写入操作
2018/04/27 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
2019/08/10 Python
解决pycharm上的jupyter notebook端口被占用问题
2019/12/17 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
2020/01/10 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
通过实例解析Python RPC实现原理及方法
2020/07/07 Python
python Selenium 库的使用技巧
2020/10/16 Python
纯CSS3绘制打火机动画火焰效果
2016/07/18 HTML / CSS
德国箱包网上商店:koffer24.de
2016/07/27 全球购物
法国高保真音响和家庭影院商店:Son Video
2019/04/26 全球购物
外贸主管求职简历的自我评价
2013/10/23 职场文书
计算机应用专业推荐信
2013/11/13 职场文书
《池塘边的叫声》教学反思
2014/04/12 职场文书
小学英语复习计划
2015/01/19 职场文书
辞职信如何写
2015/02/27 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js