python类的继承怎么样用?一文带你快速了解继承
Admin 2021-08-19 群英技术资讯 933 次浏览
这篇文章主要介绍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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
定义差集: A,B是两个集合,所有属于A且不属于B的元素构成的集合, 就是差集。交集: A,B是两个集合,既属于A又属于B的元素构成的集合
property是一个类,可以把一个方法当做属性进行使用,这样做可以简化代码使用。实际上就是装饰类中属性的gettersetter方法,使得属性可以通过对象.属性的方式获取或设置 使用property的两种方式装饰器方式类属性方式2.装饰器方式@property修饰获取的方法getter,方法名必须和属性名一样@age.setter修饰设置值的方法sett
本文实例为大家分享了python编写五子棋游戏的具体代码,供大家参考,具体内容如下
这篇文章主要给大家分享的是关于pytorch中使用cuda处理数据的内容,小编认为比较实用,因此分享给大家作参考,下文有具体的方法和实例,感兴趣的朋友跟随小编一起来了解一下吧。
Python提供了两个级别的访问网络服务。 在低级别,可以访问底层操作系统中的基本套接字支持,这允许您实现面向连接和无连接协议的客户端和服务器。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008