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 08 Python
Python把csv数据写入list和字典类型的变量脚本方法
Jun 15 Python
Python使用try except处理程序异常的三种常用方法分析
Sep 05 Python
python根据list重命名文件夹里的所有文件实例
Oct 25 Python
浅析python3字符串格式化format()函数的简单用法
Dec 07 Python
Python最小二乘法矩阵
Jan 02 Python
python通过TimedRotatingFileHandler按时间切割日志
Jul 17 Python
pytorch 归一化与反归一化实例
Dec 31 Python
解决Python图形界面中设置尺寸的问题
Mar 05 Python
Keras搭建自编码器操作
Jul 03 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
Aug 07 Python
Python+MySQL随机试卷及答案生成程序的示例代码
Feb 01 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
成本8450万,票房仅2亿,口碑两极分化,又一部DC电影扑街了
2020/04/09 欧美动漫
微信获取用户地理位置信息的原理与步骤
2015/11/12 PHP
Zend Framework自定义Helper类相关注意事项总结
2016/03/14 PHP
解决Laravel5.5下的toArray问题
2019/10/15 PHP
JQuery 常用操作代码
2010/03/14 Javascript
js中reverse函数的用法详解
2013/12/26 Javascript
JavaScript实现常用二级省市级联下拉列表的方法
2015/03/25 Javascript
jQuery的bind()方法使用详解
2015/07/15 Javascript
jquery合并表格中相同文本的相邻单元格
2015/07/17 Javascript
解决JS请求服务器gbk文件乱码的问题
2015/10/16 Javascript
简要了解jQuery移动web开发的响应式布局设计
2015/12/04 Javascript
详解Angular开发中的登陆与身份验证
2016/07/27 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
2016/08/05 Javascript
5种JavaScript脚本加载的方式
2017/01/16 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
详解Layer弹出层样式
2017/08/21 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
2017/11/30 Javascript
python根据出生年份简单计算生肖的方法
2015/03/27 Python
利用python模拟实现POST请求提交图片的方法
2017/07/25 Python
机器学习python实战之手写数字识别
2017/11/01 Python
python实现k-means聚类算法
2018/02/23 Python
Python Pandas批量读取csv文件到dataframe的方法
2018/10/08 Python
python IDLE 背景以及字体大小的修改方法
2019/07/12 Python
python处理RSTP视频流过程解析
2020/01/11 Python
儿科护理实习自我鉴定
2013/09/19 职场文书
会计专业大学生求职信范文
2014/01/28 职场文书
酒店员工检讨书
2014/02/18 职场文书
大学生优秀自荐信范文
2014/02/25 职场文书
大队干部竞选演讲稿
2014/04/28 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
教师党员个人剖析材料
2014/09/29 职场文书
检讨书格式
2015/05/07 职场文书
海底两万里读书笔记
2015/06/26 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android
MySQL普通表如何转换成分区表
2022/05/30 MySQL