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虚拟环境Virtualenv使用教程
May 18 Python
python实现线程池的方法
Jun 30 Python
详解Python函数作用域的LEGB顺序
May 14 Python
Python win32com 操作Exce的l简单方法(必看)
May 25 Python
更改Python的pip install 默认安装依赖路径方法详解
Oct 27 Python
python并发和异步编程实例
Nov 15 Python
浅谈python3发送post请求参数为空的情况
Dec 28 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
Jul 15 Python
Django在pycharm下修改默认启动端口的方法
Jul 26 Python
如何利用pygame实现简单的五子棋游戏
Dec 29 Python
pycharm设置python文件模板信息过程图解
Mar 10 Python
python如何读取和存储dict()与.json格式文件
Jun 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
个人站长制做网页常用的php代码
2007/03/03 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
2011/04/07 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
php支付宝接口用法分析
2015/01/04 PHP
PHP中数据类型转换的三种方式
2015/04/02 PHP
php版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
2016/09/30 PHP
JavaScript的document对象和window对象详解
2010/12/30 Javascript
js jquery数组介绍
2012/07/15 Javascript
当某个文本框成为焦点时即清除文本框内容
2014/04/28 Javascript
javascript数组去重的方法汇总
2015/04/14 Javascript
jQuery实现放大镜效果实例代码
2016/03/17 Javascript
Ajax跨域实现代码(后台jsp)
2017/01/21 Javascript
js实现横向拖拽导航条功能
2017/02/17 Javascript
详解Vue2.0 事件派发与接收
2017/09/05 Javascript
Vue中的Vux配置指南
2017/12/08 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
2018/11/05 Javascript
JavaScript实现放大镜效果代码示例
2020/04/29 Javascript
js轮播图之旋转木马效果
2020/10/13 Javascript
js实现简单商品筛选功能
2021/02/02 Javascript
深度剖析使用python抓取网页正文的源码
2014/06/11 Python
修改默认的pip版本为对应python2.7的方法
2018/11/06 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
python-opencv颜色提取分割方法
2018/12/08 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
2019/07/02 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
好药师网上药店:安全合法的网上药品零售药房
2017/02/15 全球购物
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
面向对象概念面试题(.NET)
2016/11/04 面试题
公司门卫管理制度
2014/02/01 职场文书
和解协议书
2014/04/16 职场文书
初中新生军训方案
2014/05/13 职场文书
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
2021/06/11 Python
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL