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实现上传样本到virustotal并查询扫描信息的方法
Oct 05 Python
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
Mar 31 Python
Python实现网络端口转发和重定向的方法
Sep 19 Python
使用Python写一个小游戏
Apr 02 Python
python高阶爬虫实战分析
Jul 29 Python
Python 获取主机ip与hostname的方法
Dec 17 Python
Python3中编码与解码之Unicode与bytes的讲解
Feb 28 Python
python 模拟银行转账功能过程详解
Aug 06 Python
python 监测内存和cpu的使用率实例
Nov 28 Python
django配置app中的静态文件步骤
Mar 27 Python
Django实现前台上传并显示图片功能
May 29 Python
利用keras使用神经网络预测销量操作
Jul 07 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使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
php操作路径的经典方法(必看篇)
2016/10/04 PHP
php中curl和soap方式请求服务超时问题的解决
2018/06/11 PHP
Laravel框架中集成MongoDB和使用详解
2019/10/17 PHP
用js实现随机返回数组的一个元素
2007/08/13 Javascript
jquery 经典动画菜单效果代码
2010/01/26 Javascript
jQuery对象和DOM对象使用说明
2010/06/25 Javascript
js 获取计算后的样式写法及注意事项
2013/02/25 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
jquery获取一个元素下面相同子元素的个数代码
2014/07/31 Javascript
JavaScript获取网页支持表单字符集的方法
2015/04/02 Javascript
javascript中clipboardData对象用法详解
2015/05/13 Javascript
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
2015/06/16 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
2017/01/18 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
基于Bootstrap分页的实例讲解(必看篇)
2017/07/04 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
vue实现的微信机器人聊天功能案例【附源码下载】
2019/02/18 Javascript
纯异步nodejs文件夹(目录)复制功能
2019/09/03 NodeJs
原生js+canvas实现验证码
2020/11/29 Javascript
Python yield 小结和实例
2014/04/25 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
浅析Windows 嵌入python解释器的过程
2019/07/26 Python
基于Python实现签到脚本过程解析
2019/10/25 Python
Python实现括号匹配方法详解
2020/02/10 Python
Python request操作步骤及代码实例
2020/04/13 Python
Python解析微信dat文件的方法
2020/11/30 Python
乐高积木玩具美国官网:LEGO Shop US
2016/09/16 全球购物
英国网上自行车商店:Tredz Bikes
2019/10/29 全球购物
英国健身专家:WIT Fitness
2021/02/09 全球购物
《燕子》教学反思
2014/02/18 职场文书
党的群众路线学习笔记
2014/11/06 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书