新闻动态

Python基础知识学习之类的继承

发布日期:2022-03-29 08:30 | 文章来源:CSDN

一、继承的格式

类的继承格式如下,括号中的为父类名。

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类的继承内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

香港服务器租用

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

相关文章

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部