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中针对函数处理的特殊方法
Mar 06 Python
python通过文件头判断文件类型
Oct 30 Python
matplotlib设置legend图例代码示例
Dec 19 Python
python将每个单词按空格分开并保存到文件中
Mar 19 Python
pytorch + visdom CNN处理自建图片数据集的方法
Jun 04 Python
浅析Python函数式编程
Oct 06 Python
Pycharm无法使用已经安装Selenium的解决方法
Oct 13 Python
适合Python初学者的一些编程技巧
Feb 12 Python
新建文件时Pycharm中自动设置头部模板信息的方法
Apr 17 Python
Python 中由 yield 实现异步操作
May 04 Python
PyQt5实现画布小程序
May 30 Python
matplotlib之pyplot模块实现添加子图subplot的使用
Apr 25 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
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
php.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
FF IE兼容性的修改小结
2009/09/02 Javascript
JavaScript 学习笔记(五)
2009/12/31 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
2012/03/14 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
2015/11/24 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
浅谈js里面的InttoStr和StrtoInt
2016/06/14 Javascript
微信小程序开发之入门实例教程篇
2017/03/07 Javascript
详解node.js搭建代理服务器请求数据
2017/04/08 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
p5.js临摹旋转爱心
2019/10/23 Javascript
jQuery实现飞机大战小游戏
2020/07/05 jQuery
python实现向ppt文件里插入新幻灯片页面的方法
2015/04/28 Python
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
Python DataFrame设置/更改列表字段/元素类型的方法
2018/06/09 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
Python一句代码实现找出所有水仙花数的方法
2018/11/13 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
2019/06/19 Python
python异常处理和日志处理方式
2019/12/24 Python
Python读取分割压缩TXT文本文件实例
2020/02/14 Python
Python模块常用四种安装方式
2020/10/20 Python
jupyter 添加不同内核的操作
2021/02/06 Python
CSS3实现点击放大的动画实例代码
2017/02/27 HTML / CSS
Html5无刷新修改browser Url的方法
2014/01/15 HTML / CSS
adidas旗下高尔夫装备供应商:TaylorMade Golf(泰勒梅高尔夫)
2016/08/28 全球购物
英国天然有机美容护肤品:Neal’s Yard Remedies
2018/05/05 全球购物
俄罗斯一家时尚女装商店:Charuel
2019/12/04 全球购物
法国在线药房:1001Pharmacies
2021/03/07 全球购物
澳大利亚最受欢迎的超级商场每日优惠:Catch
2020/11/17 全球购物
OnePlus加拿大官网:中国国际化手机品牌
2020/10/13 全球购物
公司总经理岗位职责范本
2014/08/15 职场文书
农业项目建议书
2014/08/25 职场文书