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运行时间的几种方法
Jun 17 Python
Python判断某个用户对某个文件的权限
Oct 13 Python
python导入csv文件出现SyntaxError问题分析
Dec 15 Python
Django教程笔记之中间件middleware详解
Aug 01 Python
详解python函数的闭包问题(内部函数与外部函数详述)
May 17 Python
详解python中的time和datetime的常用方法
Jul 08 Python
Python Threading 线程/互斥锁/死锁/GIL锁
Jul 21 Python
python实现加密的方式总结
Jan 19 Python
python使用Geany编辑器配置方法
Feb 21 Python
Python opencv相机标定实现原理及步骤详解
Apr 09 Python
python 多进程和协程配合使用写入数据
Oct 30 Python
BeautifulSoup中find和find_all的使用详解
Dec 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学习笔记 IIS7下安装配置php环境
2012/10/29 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
php堆排序实现原理与应用方法
2015/01/03 PHP
使用正则去除php代码中的注释方法
2016/11/03 PHP
php实现微信支付之企业付款
2018/05/30 PHP
htm调用JS代码
2007/03/15 Javascript
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
juqery 学习之三 选择器 可见性 元素属性
2010/11/25 Javascript
在jquery中处理带有命名空间的XML数据
2011/06/13 Javascript
javascript之querySelector和querySelectorAll使用介绍
2011/12/20 Javascript
jquery批量设置属性readonly和disabled的方法
2014/01/24 Javascript
jQuery过滤特殊字符及JS字符串转为数字
2016/05/26 Javascript
BootStrap智能表单实战系列(七)验证的支持
2016/06/13 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
python实现爬虫下载美女图片
2015/07/14 Python
python实现报表自动化详解
2017/11/16 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
Python常用模块sys,os,time,random功能与用法实例分析
2020/01/07 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
Dyson加拿大官方网站:购买戴森吸尘器,风扇,冷热器及配件
2016/10/26 全球购物
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
国际政治个人自荐信范文
2013/11/26 职场文书
少儿节目主持串词
2014/04/02 职场文书
《赠汪伦》教学反思
2014/04/12 职场文书
安全生产承诺书范文
2014/05/22 职场文书
人力资源管理毕业生自荐信
2014/06/26 职场文书
销售员试用期自我评价
2014/09/15 职场文书
会议主持词开场白
2015/05/28 职场文书
旗帜观后感
2015/06/08 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书
asyncio异步编程之Task对象详解
2022/03/13 Python
python实现对doc、txt、xls等文档的读写操作
2022/04/02 Python
Win11开始菜单添加休眠选项
2022/04/19 数码科技