python类的继承怎么样用?一文带你快速了解继承
Admin 2021-08-19 群英技术资讯 1876 次浏览
这篇文章主要介绍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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
在web 开发过程中,Django 与后台数据库的交互是必不可少的一项,也是实现业务逻辑所需数据的重要方式,这篇文章主要给大家介绍了关于Django中常用的查询数据方法及查询对象条件的相关资料,需要的朋友可以参考下
json.loads()用于解析一个有效的JSON字符串并将其转换为Python字典,json.load——()用于从一个文件读取JSON类型的数据,然后转转换成Python字典,本文讲解下python中两者的使用
这篇文章主要介绍了Python登录系统界面实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
下面就使用VLAD表示图像,实现一个小型的图像数据库的检索程序。下面实现需要的功能模块,分步骤给大家介绍的非常详细,对OpenCV图像数据库检索功能感兴趣的朋友跟随小编一起看看吧
本篇文章将介绍如何用openpyxl操作excel,它支持格式的表格文件,并且支持 Numpy、Pandas 等包,可用于绘制图表
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008