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 27 Python
python 的列表遍历删除实现代码
Apr 12 Python
Python的math模块中的常用数学函数整理
Feb 04 Python
Python合并字典键值并去除重复元素的实例
Dec 18 Python
python中类变量与成员变量的使用注意点总结
Apr 29 Python
python取代netcat过程分析
Feb 10 Python
TensorFlow平台下Python实现神经网络
Mar 10 Python
Django学习教程之静态文件的调用详解
May 08 Python
如何在Django中设置定时任务的方法示例
Jan 18 Python
解决python3中的requests解析中文页面出现乱码问题
Apr 19 Python
Python sqlite3查询操作过程解析
Feb 20 Python
python3 简单实现组合设计模式
Jul 02 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
各种咖啡的英文名子是什么
2021/03/03 新手入门
PHP中创建并处理图象
2006/10/09 PHP
PHP生成网页快照 不用COM不用扩展.
2010/02/11 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
javawscript 三级菜单的实现原理
2009/07/01 Javascript
js onload事件不起作用示例分析
2013/10/09 Javascript
node.js中的fs.chmod方法使用说明
2014/12/18 Javascript
javascript中window.open在原来的窗口中打开新的窗口(不同名)
2015/11/15 Javascript
浅谈javascript中的Function和Arguments
2016/08/30 Javascript
Vue列表页渲染优化详解
2017/07/24 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
2018/09/08 Javascript
jQuery操作动画完整实例分析
2020/01/10 jQuery
基于vue hash模式微信分享#号的解决
2020/09/07 Javascript
Vue父子组件传值的一些坑
2020/09/16 Javascript
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
Python获取文件ssdeep值的方法
2014/10/05 Python
Python日期的加减等操作的示例
2017/08/15 Python
使用Python和xlwt向Excel文件中写入中文的实例
2018/04/21 Python
Python进阶之@property动态属性的实现
2019/04/01 Python
基于python图书馆管理系统设计实例详解
2020/08/05 Python
python实现文件+参数发送request的实例代码
2021/01/05 Python
css3圆角样式分享自定义按钮样式
2013/12/27 HTML / CSS
html5开发三八女王节表白神器
2018/03/07 HTML / CSS
床上用品全球在线购物:BeddingInn
2016/12/18 全球购物
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
出纳试用期自我鉴定
2014/04/07 职场文书
校运动会广播稿(100篇)
2014/09/12 职场文书
幼儿教师个人总结
2015/02/05 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
入党介绍人意见范文
2015/06/01 职场文书
爱国之歌(8首)
2019/09/29 职场文书
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript