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中的模块和包概念介绍
Apr 13 Python
Python实现读取txt文件并画三维图简单代码示例
Dec 09 Python
使用pygame模块编写贪吃蛇的实例讲解
Feb 05 Python
Python实现从log日志中提取ip的方法【正则提取】
Mar 31 Python
用Python3创建httpServer的简单方法
Jun 04 Python
python for 循环获取index索引的方法
Feb 01 Python
Django重置migrations文件的方法步骤
May 01 Python
python 根据字典的键值进行排序的方法
Jul 24 Python
Python如何安装第三方模块
May 28 Python
python中@property的作用和getter setter的解释
Dec 22 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
Jan 08 Python
python中urllib包的网络请求教程
Apr 19 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 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
2020/08/17 PHP
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
关于JS管理作用域的问题
2013/04/10 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
js 加密压缩出现bug解决方案
2014/11/25 Javascript
jQuery大于号(>)选择器的作用解释
2015/01/13 Javascript
微信小程序 在线支付功能的实现
2017/03/14 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
JS实现倒计时图文效果
2018/11/17 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
2019/09/12 Javascript
微信小程序封装多张图片上传api代码实例
2019/12/30 Javascript
优化Vue中date format的性能详解
2020/01/13 Javascript
node.js中 mysql 增删改查操作及async,await处理实例分析
2020/02/11 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
python集合的创建、添加及删除操作示例
2019/10/08 Python
Python搭建代理IP池实现检测IP的方法
2019/10/27 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
Python实现井字棋小游戏
2020/03/09 Python
SHEIN香港:价格实惠的女性时尚服装
2018/08/14 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
PyQt 如何创建自定义QWidget
2021/03/24 Python
棉花姑娘教学反思
2014/02/15 职场文书
自我鉴定标准格式
2014/03/19 职场文书
医药销售自荐书
2014/05/29 职场文书
护理专业求职信
2014/06/15 职场文书
通讯稿范文
2015/07/22 职场文书
CSS3 制作的悬停缩放特效
2021/04/13 HTML / CSS
Python趣味挑战之实现简易版音乐播放器
2021/05/28 Python
实例讲解Python中sys.argv[]的用法
2021/06/03 Python