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中time模块与datetime模块在使用中的不同之处
Nov 24 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
Jun 14 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
Jul 13 Python
浅谈python中的正则表达式(re模块)
Oct 17 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
Jun 21 Python
Django框架HttpRequest对象用法实例分析
Nov 01 Python
Python脚本操作Excel实现批量替换功能
Nov 20 Python
基于pandas中expand的作用详解
Dec 17 Python
使用python 计算百分位数实现数据分箱代码
Mar 03 Python
Python 批量读取文件中指定字符的实现
Mar 06 Python
Python图像读写方法对比
Nov 16 Python
Python OpenCV超详细讲解读取图像视频和网络摄像头
Apr 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
Syphon 虹吸式咖啡壶冲煮–拨动法
2021/03/03 冲泡冲煮
php调用dll的实例操作动画与代码分享
2012/08/14 PHP
codeigniter集成ucenter1.6双向通信的解决办法
2014/06/12 PHP
Javascript的并行运算实现代码
2010/11/19 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
js 取时间差去掉周六周日实现代码
2012/12/25 Javascript
JS JQUERY实现滚动条自动滚到底的方法
2015/01/09 Javascript
跟我学习javascript的执行上下文
2015/11/18 Javascript
基于jQuery实现二级下拉菜单效果
2016/02/01 Javascript
学习使用jquery iScroll.js移动端滚动条插件
2020/03/24 Javascript
jQuery图片轮播插件——前端开发必看
2016/05/31 Javascript
Web程序员必备的7个JavaScript函数
2016/06/14 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
Vue下的国际化处理方法
2017/12/18 Javascript
基于js 各种排序方法和sort方法的区别(详解)
2018/01/03 Javascript
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
python读取json文件并将数据插入到mongodb的方法
2015/03/23 Python
python使用arp欺骗伪造网关的方法
2015/04/24 Python
wxPython中listbox用法实例详解
2015/06/01 Python
Python网络爬虫之爬取微博热搜
2019/04/18 Python
Python中常用的8种字符串操作方法
2019/05/06 Python
Python实现最常见加密方式详解
2019/07/13 Python
python如何把字符串类型list转换成list
2020/02/18 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
用Python 执行cmd命令
2020/12/18 Python
Nili Lotan官网:Nili Lotan同名品牌
2018/01/07 全球购物
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
《日月潭》教学反思
2014/02/28 职场文书
学校课外活动总结
2014/05/08 职场文书
市场营销专业求职信
2014/06/17 职场文书
心理健康教育培训研修感言
2015/11/18 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
SpringAop日志找不到方法的处理
2021/06/21 Java/Android
CSS实现两列布局的N种方法
2021/08/02 HTML / CSS
DE1103使用报告
2022/04/05 无线电