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中__init__和__new__的区别详解
Jul 09 Python
python比较两个列表大小的方法
Jul 11 Python
详解Python多线程Selenium跨浏览器测试
Apr 01 Python
python+django加载静态网页模板解析
Dec 12 Python
python学习入门细节知识点
Mar 29 Python
pygame实现简易飞机大战
Sep 11 Python
使用Python制作简单的小程序IP查看器功能
Apr 16 Python
Python 给屏幕打印信息加上颜色的实现方法
Apr 24 Python
手把手教你使用Python创建微信机器人
Apr 29 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
Jan 19 Python
scrapy头部修改的方法详解
Dec 06 Python
Python中Numpy和Matplotlib的基本使用指南
Nov 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
提问的智慧
2006/10/09 PHP
php实现refresh刷新页面批量导入数据的方法
2014/12/23 PHP
yii2.0实现创建简单widgets示例
2016/07/18 PHP
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
javascript中setInterval的用法
2015/07/19 Javascript
微信小程序 radio单选框组件详解及实例代码
2017/01/10 Javascript
深入理解vue.js中$watch的oldvalue与newValue
2017/08/07 Javascript
jquery点击回车键实现登录效果并默认焦点的方法
2018/03/09 jQuery
详解Angular中通过$location获取地址栏的参数
2018/08/02 Javascript
vue router 组件的高级应用实例代码
2019/04/08 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
微信小程序实现电子签名功能
2020/07/29 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
[59:53]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第二场 3月6日
2021/03/11 DOTA
python单线程实现多个定时器示例
2014/03/30 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
Python实现七彩蟒蛇绘制实例代码
2018/01/16 Python
python3中函数参数的四种简单用法
2018/07/09 Python
python try except 捕获所有异常的实例
2018/10/18 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
python实现登录与注册系统
2020/11/30 Python
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
AmazeUI 列表的实现示例
2020/08/17 HTML / CSS
Nike西班牙官方网站:Nike.com (ES)
2017/10/30 全球购物
Conforama西班牙:您的家具、装饰和电器商店
2020/02/21 全球购物
护理专业大学生自我推荐信
2014/01/25 职场文书
安全生产演讲稿
2014/05/09 职场文书
经济信息系毕业生自荐信
2014/06/02 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
四风批评与自我批评范文
2014/10/14 职场文书
工作作风建设心得体会
2014/10/22 职场文书
红领巾广播站广播稿
2015/08/19 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
一文搞懂python异常处理、模块与包
2021/06/26 Python
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android