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中pygame模块用法实例
Oct 09 Python
详解pyqt5 动画在QThread线程中无法运行问题
May 05 Python
Python解决线性代数问题之矩阵的初等变换方法
Dec 12 Python
django的ORM模型的实现原理
Mar 04 Python
Python函数和模块的使用总结
May 20 Python
在Pycharm中调试Django项目程序的操作方法
Jul 17 Python
python3中的eval和exec的区别与联系
Oct 10 Python
python实现大学人员管理系统
Oct 25 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
Dec 09 Python
Python多线程thread及模块使用实例
Apr 28 Python
Python如何使用PIL Image制作GIF图片
May 16 Python
利用Python pandas对Excel进行合并的方法示例
Nov 04 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
从零开始学YII2框架(四)扩展插件yii2-kartikgii
2014/08/20 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
详解Yii2.0使用AR联表查询实例
2017/06/16 PHP
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
jQuery 图片切换插件(代码比较少)
2012/05/07 Javascript
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
2014/06/26 Javascript
Bootstrap安装环境配置教程分享
2016/05/27 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
基于JavaScript实现验证码功能
2017/04/01 Javascript
jquery 禁止鼠标右键并监听右键事件
2017/04/27 jQuery
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
vue实例中data使用return包裹的方法
2018/08/27 Javascript
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
python多线程http下载实现示例
2013/12/30 Python
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
Python实现生成随机日期字符串的方法示例
2017/12/25 Python
python基于itchat模块实现微信防撤回
2019/04/29 Python
python如何提取英语pdf内容并翻译
2020/03/03 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
荷兰手表网站:Watch2Day
2018/07/02 全球购物
最新的小工具和卓越的产品设计:Oh That Tech!
2019/08/07 全球购物
校园自助餐厅的创业计划书
2013/12/26 职场文书
幼儿园亲子活动方案
2014/01/29 职场文书
12月小学生校园广播稿
2014/02/04 职场文书
小区物业门卫岗位职责
2014/04/10 职场文书
投标服务承诺书
2014/05/28 职场文书
信息管理专业自荐书
2014/06/05 职场文书
小学捐书活动总结
2014/07/05 职场文书
机电一体化应届生求职信
2014/08/09 职场文书
校长新学期致辞
2015/07/30 职场文书
《红领巾真好》教学反思
2016/02/16 职场文书
Python Pandas 删除列操作
2022/03/16 Python
win10更新失败无限重启解决方法
2022/04/19 数码科技