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开发之函数定义实例分析
Nov 12 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
Jul 08 Python
Python爬取十篇新闻统计TF-IDF
Jan 03 Python
使用pandas对矢量化数据进行替换处理的方法
Apr 11 Python
Python实现简单查找最长子串功能示例
Feb 26 Python
Python中三元表达式的几种写法介绍
Mar 04 Python
python基于Selenium的web自动化框架
Jul 14 Python
Python上下文管理器全实例详解
Nov 12 Python
Python中qutip用法示例详解
Oct 02 Python
python 制作网站筛选工具(附源码)
Jan 21 Python
教你如何使用Python开发一个钉钉群应答机器人
Jun 21 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引用效率问题分析
2012/03/23 PHP
探讨:parse url解析URL,返回其组成部分
2013/06/14 PHP
codeigniter中测试通过的分页类示例
2014/04/17 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
js option删除代码集合
2008/11/12 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
javascript简单实现命名空间效果
2014/03/06 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
优化RequireJS项目的相关技巧总结
2015/07/01 Javascript
分步解析JavaScript实现tab选项卡自动切换功能
2016/01/25 Javascript
基于JavaScript实现瀑布流布局(二)
2016/01/26 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
基于JQuery的购物车添加删除以及结算功能示例
2017/03/08 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
2017/03/09 Javascript
Angular中使用better-scroll插件的方法
2018/03/27 Javascript
微信小程序实现电子签名功能
2020/07/29 Javascript
NodeJS和浏览器中this关键字的不同之处
2021/03/03 NodeJs
[53:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第三场 6.2
2018/06/03 DOTA
Python实现从订阅源下载图片的方法
2015/03/11 Python
python删除文本中行数标签的方法
2018/05/31 Python
python定时按日期备份MySQL数据并压缩
2019/04/19 Python
python中字符串数组逆序排列方法总结
2019/06/23 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
2020/03/16 Python
如何使用Cython对python代码进行加密
2020/07/08 Python
猫途鹰英国网站:TripAdvisor英国(旅游社区和旅游评论)
2016/08/30 全球购物
职称自我鉴定
2013/10/15 职场文书
公务员总结性个人自我评价
2013/12/05 职场文书
人事专员的岗位职责
2014/03/01 职场文书
怎样拟定创业计划书
2014/05/01 职场文书
2014年文秘工作总结
2014/11/25 职场文书
放弃继承权公证书
2015/01/23 职场文书
前台接待岗位职责
2015/02/03 职场文书
2015教师年度工作总结范文
2015/04/07 职场文书
2015年工商所工作总结
2015/05/21 职场文书
初中语文教学研修日志
2015/11/13 职场文书