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简单实现基数排序算法
May 16 Python
python异常和文件处理机制详解
Jul 19 Python
python指定写入文件时的编码格式方法
Jun 07 Python
python抓取搜狗微信公众号文章
Apr 01 Python
解决python彩色螺旋线绘制引发的问题
Nov 23 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
Mar 09 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
Mar 25 Python
Python flask框架如何显示图像到web页面
Jun 03 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
Nov 11 Python
Python3中PyQt5简单实现文件打开及保存
Jun 10 Python
python异常中else的实例用法
Jun 15 Python
Python日志模块logging用法
Jun 05 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可能遇到的问题“无法载入mysql扩展” 的解决方法
2007/04/16 PHP
Php Image Resize图片大小调整的函数代码
2011/01/17 PHP
php 地区分类排序算法
2013/07/01 PHP
本地计算机无法启动Apache故障处理
2014/08/08 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
屏蔽script注入小例子
2013/11/12 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
js 输入框 正则表达式(菜鸟必看教程)
2017/02/19 Javascript
express+mockjs实现模拟后台数据发送功能
2018/01/07 Javascript
Vue+Flask实现简单的登录验证跳转的示例代码
2018/01/13 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
Vue 配合eiement动态路由,权限验证的方法
2018/09/26 Javascript
基于javascript实现碰撞检测
2020/03/12 Javascript
Vue——解决报错 Computed property "****" was assigned to but it has no setter.
2020/12/19 Vue.js
python之yield表达式学习
2014/09/02 Python
python妹子图简单爬虫实例
2015/07/07 Python
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
python处理csv中的空值方法
2018/06/22 Python
利用Pyhton中的requests包进行网页访问测试的方法
2018/12/26 Python
python 获取计算机的网卡信息
2021/02/18 Python
Redbubble法国:由独立艺术家设计的独特产品
2019/01/08 全球购物
女娲补天教学反思
2014/02/05 职场文书
个人安全承诺书
2014/05/22 职场文书
国际商务专业毕业生自我鉴定2014
2014/09/27 职场文书
廉洁自律承诺书2015
2015/01/22 职场文书
奔腾年代观后感
2015/06/09 职场文书
九九重阳节致辞
2015/07/31 职场文书
Python基础知识之变量的详解
2021/04/14 Python
Python使用random模块实现掷骰子游戏的示例代码
2021/04/29 Python
html css3不拉伸图片显示效果
2021/06/07 HTML / CSS
Win11右下角图标点了没反应怎么办?Win11点击右下角图标无反应解决方法汇总
2022/07/07 数码科技