python3中类的继承以及self和super的区别详解


Posted in Python onJune 26, 2019

python中类的继承:

子类继承父类,及子类拥有了父类的 属性 和 方法。

python中类的初始化都是__init__()。所以父类和子类的初始化方式都是__init__(),但是如果子类初始化时没有这个函数,那么它便调用父类的__init__();如果实现了这个函数,就会覆盖父类的初始化函数。如果继承父类的__init__(),就需要在子类中显示调用这个函数。实现如下:

class Animal(object):
 def __init__(self):
  self.name = "我是父类"
 
class Panda(Animal):
 def __init__(self):
  super().__init__() #使用super的方式来显示调用父类的__init__()函数
 
if __name__=="__main__":
 panda = Panda() #实例化Panda
 print(panda.name)
我是父类  #输出可以看出使用了父类的初始化函数并有了name属性

子类也可以在初始化函数中定义自己的属性:

class Animal(object):
 def __init__(self):
  self.name = "我是父类"
 
class Panda(Animal):
 def __init__(self):
  super().__init__()
  self.myname = "panda"
 
if __name__=="__main__":
 panda = Panda()
 print(panda.myname)
panda  #子类自己的属性

self和super的区别:

★self是首先调用自身的方法如果自身没有再去父类中找;super是直接从父类中找方法

★self是类,super是预编译指令

★self class 和super calss的输出是一样的

class Animal(object):
 def __init__(self):
  self.name = "我是父类"
 
 def A(self):     #父类中的A方法
  print("父类的A方法")
 
class Panda(Animal):
 def __init__(self):
  super().__init__()
  self.myname = "panda"
 
 def A(self):     #子类中的A方法
  print("子类的A方法")
 
 def B(self):
  self.A()  #self调用A
  super().A()  #super调用A
 
 
if __name__=="__main__":
 panda = Panda()
 panda.B()   #通过B函数来调用A方法,查看self和super的区别
子类的A方法   #我们说过self是先从自身找方法,没有再去父类找
父类的A方法   #而super则是直接从父类中找

如果子类中没有A方法那么会输出:

父类的A方法  #子类没有,self从父类中找
父类的A方法

父类没有则会报错

以上则是python中继承的基础讲解,以及self和super的区别。类其实还是又很多复杂的地方,在使用过程会慢慢学习到,这里只是一个入门级的说明。

这篇python3中类的继承以及self和super的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现端口复用实例代码
Jul 03 Python
Python动态加载模块的3种方法
Nov 22 Python
python实现的简单文本类游戏实例
Apr 28 Python
Python3.5装饰器典型案例分析
Apr 30 Python
python之PyQt按钮右键菜单功能的实现代码
Aug 17 Python
Python实现把类当做字典来访问
Dec 16 Python
pycharm中选中一个单词替换所有重复单词的实现方法
Nov 17 Python
python 实现Requests发送带cookies的请求
Feb 08 Python
requests在python中发送请求的实例讲解
Feb 17 Python
pytorch中的model=model.to(device)使用说明
May 24 Python
python实现MD5进行文件去重的示例代码
Jul 09 Python
教你使用一行Python代码玩遍童年的小游戏
Aug 23 Python
对Python中class和instance以及self的用法详解
Jun 26 #Python
Python中的支持向量机SVM的使用(附实例代码)
Jun 26 #Python
对python 中class与变量的使用方法详解
Jun 26 #Python
python 机器学习之支持向量机非线性回归SVR模型
Jun 26 #Python
python机器学习库scikit-learn:SVR的基本应用
Jun 26 #Python
Python Numpy 实现交换两行和两列的方法
Jun 26 #Python
python 字典操作提取key,value的方法
Jun 26 #Python
You might like
提升PHP执行速度全攻略(上)
2006/10/09 PHP
php URL编码解码函数代码
2009/03/10 PHP
PHP房贷计算器实例代码,等额本息,等额本金
2017/04/01 PHP
JavaScript中的类继承
2010/11/25 Javascript
jquery下jstree简单应用 - v1.0
2011/04/14 Javascript
nodejs中使用monk访问mongodb
2014/07/06 NodeJs
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
有关json_decode乱码及NULL的问题
2015/10/13 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
浅析如何利用JavaScript进行语音识别
2016/10/27 Javascript
Javascript 获取鼠标当前的位置实现方法
2016/10/27 Javascript
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
ReactNative Image组件使用详解
2017/08/07 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
详解JS数值Number类型
2018/02/07 Javascript
Vue封装的组件全局注册并引用
2019/07/24 Javascript
[01:07:13]TNC vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
用Python写一个无界面的2048小游戏
2016/05/24 Python
Python在图片中添加文字的两种方法
2017/04/29 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
Python将图片转换为字符画的方法
2020/06/16 Python
对python中的pop函数和append函数详解
2018/05/04 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
2019/06/27 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
2019/10/24 Python
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
家得宝加拿大家装网上商店:The Home Depot加拿大
2016/08/27 全球购物
vue+django实现下载文件的示例
2021/03/24 Vue.js
建筑毕业生自我鉴定
2013/10/18 职场文书
餐饮主管岗位职责
2013/12/10 职场文书
老干部工作先进事迹
2014/08/17 职场文书
2014年妇联工作总结
2014/11/21 职场文书
征求意见函
2015/06/05 职场文书
在前女友婚礼上,用Python破解了现场的WIFI还把名称改成了
2021/05/28 Python
React自定义hook的方法
2022/06/25 Javascript