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多线程抓取天涯帖子内容示例
Apr 03 Python
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
Jul 02 Python
Python读写Json涉及到中文的处理方法
Sep 12 Python
python实现杨辉三角思路
Jul 14 Python
基于Python开发chrome插件的方法分析
Jul 07 Python
Python 字符串转换为整形和浮点类型的方法
Jul 17 Python
django query模块
Apr 20 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
Aug 18 Python
利用Python的turtle库绘制玫瑰教程
Nov 23 Python
python下对hsv颜色空间进行量化操作
Jun 04 Python
keras实现多种分类网络的方式
Jun 11 Python
pycharm全局搜索的具体步骤
Jul 28 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&mysql(二)
2006/10/09 PHP
phpMyAdmin 安装配置方法和问题解决
2009/06/08 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
php将服务端的文件读出来显示在web页面实例
2016/10/31 PHP
jQuery学习笔记[1] jQuery中的DOM操作
2010/12/03 Javascript
jquer之ajaxQueue简单实现代码
2011/09/15 Javascript
在jQuery ajax中按钮button和submit的区别分析
2012/10/07 Javascript
JQUERY简单按钮轮换选中效果实现方法
2015/05/07 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
JS实现太极旋转思路分析
2016/12/09 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
vue-cli初始化项目中使用less的方法
2018/08/09 Javascript
微信小程序实现时间预约功能
2018/11/27 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
2019/01/29 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
vuex + keep-alive实现tab标签页面缓存功能
2019/10/17 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
2020/04/26 Javascript
JavaScript常用进制转换及位运算实例解析
2020/10/14 Javascript
利用pandas读取中文数据集的方法
2018/07/25 Python
Python3 max()函数基础用法
2019/02/19 Python
解决使用python print打印函数返回值多一个None的问题
2020/04/09 Python
你需要学会的8个Python列表技巧
2020/06/24 Python
高考考python编程是真的吗
2020/07/20 Python
Python3+Django get/post请求实现教程详解
2021/02/16 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
CSS3之多背景background使用示例
2013/10/18 HTML / CSS
英国123鲜花网站:123 Flowers
2019/07/07 全球购物
《我为你骄傲》教学反思
2014/02/20 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
2014年高二班主任工作总结
2014/12/16 职场文书
总结会主持词
2015/07/02 职场文书
pytorch--之halfTensor的使用详解
2021/05/24 Python
macos系统如何实现微信双开? mac登录两个微信以上微信的技巧
2022/07/23 数码科技