python类的继承怎么样用?一文带你快速了解继承
Admin 2021-08-19 群英技术资讯 794 次浏览
这篇文章主要介绍Python数据类型,很多新手在学习Python时,对类的继承不是很了解,下文给大家介绍了继承的用法,重写父类方法等等内容,具有一定参考学习价值,感兴趣的朋友可以看一看,希望大家阅读完这篇文章能有所收获。
类的继承格式如下,括号中的为父类名。
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类的继承的内容,大家可以关注其他相关文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了Django显示可视化图表的实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
这篇文章主要介绍了利用Python+Selenium+Pytesseract实现图片验证码识别,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
python@运算符是什么意思?怎样使用?对于刚接触Python的朋友,可能对@运算符不是很了解,因此这篇文章就给大家介绍一下python@运算符的内容,感兴趣的朋友就继续往下看吧。
Python利用PaddleOCR制作个搜题小工具,下文有实例供大家参考,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家,下面我们一起来了解看看吧。
math数学模块和random随机模块是Python常用的标准库之一。本文将详细为大家介绍一下这两个模块的使用方法,需要的小伙伴可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008