python super用法及原理详解


Posted in Python onJanuary 20, 2020

这篇文章主要介绍了python super用法及原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

概念

super作为python的内建函数。主要作用如下:

  • 允许我们避免使用基类
  • 跟随多重继承来使用

实例

在单个继承的场景下,一般使用super来调用基类来实现:
下面是一个例子:

class Mammal(object):
 def __init__(self, mammalName):
  print(mammalName, 'is a warm-blooded animal.')
  
class Dog(Mammal):
 def __init__(self):
  print('Dog has four legs.')
  super().__init__('Dog')
  
d1 = Dog()

输出结果:

➜ super git:(master) ✗ py super_script.py

Dog has four legs.

Dog is a warm-blooded animal.

super在多重继承里面的使用:

下面是一个例子:

class Animal:
 def __init__(self, animalName):
  print(animalName, 'is an animal.');
class Mammal(Animal):
 def __init__(self, mammalName):
  print(mammalName, 'is a warm-blooded animal.')
  super().__init__(mammalName)

class NonWingedMammal(Mammal):
 def __init__(self, NonWingedMammalName):
  print(NonWingedMammalName, "can't fly.")
  super().__init__(NonWingedMammalName)
class NonMarineMammal(Mammal):
 def __init__(self, NonMarineMammalName):
  print(NonMarineMammalName, "can't swim.")
  super().__init__(NonMarineMammalName)
class Dog(NonMarineMammal, NonWingedMammal):
 def __init__(self):
  print('Dog has 4 legs.');
  super().__init__('Dog')

d = Dog()
print('')
bat = NonMarineMammal('Bat')

输出结果:

➜ super git:(master) ✗ py super_muli.py
Dog has 4 legs.
Dog can't swim.
Dog can't fly.
Dog is a warm-blooded animal.
Dog is an animal.

Bat can't swim.
Bat is a warm-blooded animal.
Bat is an animal.

参考文档

https://www.programiz.com/python-programming/methods/built-in/super

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python根据文件大小打log日志
Oct 09 Python
Python基于PycURL实现POST的方法
Jul 25 Python
深入理解python try异常处理机制
Jun 01 Python
Python实现读取文件最后n行的方法
Feb 23 Python
Django卸载之后重新安装的方法
Mar 15 Python
Python迭代器定义与简单用法分析
Apr 30 Python
Python实现FTP文件传输的实例
Jul 07 Python
opencv+python实现均值滤波
Feb 19 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
Mar 09 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
Feb 24 Python
Python3.10的一些新特性原理分析
Sep 15 Python
梳理总结Python开发中需要摒弃的18个坏习惯
Jan 22 Python
tensorflow 变长序列存储实例
Jan 20 #Python
在tensorflow中实现去除不足一个batch的数据
Jan 20 #Python
Tensorflow实现在训练好的模型上进行测试
Jan 20 #Python
Python线程条件变量Condition原理解析
Jan 20 #Python
tensorflow tf.train.batch之数据批量读取方式
Jan 20 #Python
Python list运算操作代码实例解析
Jan 20 #Python
Python模块future用法原理详解
Jan 20 #Python
You might like
php实现的太平洋时间和北京时间互转的自定义函数分享
2014/08/19 PHP
php文件读取方法实例分析
2015/06/20 PHP
php进程间通讯实例分析
2016/07/11 PHP
PHP实现的简单sha1加密功能示例
2017/08/27 PHP
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
2012/10/11 Javascript
JS实现OCX控件的事件响应示例
2014/09/17 Javascript
JavaScript中split() 使用方法汇总
2015/04/17 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
2016/10/18 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
2016/11/10 Javascript
使用Angular.js实现简单的购物车功能
2016/11/21 Javascript
Vue.js第二天学习笔记(vue-router)
2016/12/01 Javascript
利用vue实现模态框组件
2016/12/19 Javascript
详解Vue 开发模式下跨域问题
2017/06/06 Javascript
浅谈es6中export和export default的作用及区别
2018/02/07 Javascript
重学JS 系列:聊聊继承(推荐)
2019/04/11 Javascript
详解关于React-Router4.0跳转不置顶解决方案
2019/05/10 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
2020/04/04 jQuery
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
[01:01:24]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
关于Python正则表达式 findall函数问题详解
2018/03/22 Python
Python模拟登录的多种方法(四种)
2018/06/01 Python
python实现textrank关键词提取
2018/06/22 Python
Python多线程原理与用法实例剖析
2019/01/22 Python
Python编写通讯录通过数据库存储实现模糊查询功能
2019/07/18 Python
关于pytorch多GPU训练实例与性能对比分析
2019/08/19 Python
Django restframework 框架认证、权限、限流用法示例
2019/12/21 Python
优秀学生干部个人事迹材料
2014/06/02 职场文书
2014年医院十一国庆节活动方案
2014/09/15 职场文书
护士节慰问信
2015/02/15 职场文书
离婚答辩状怎么写
2015/05/22 职场文书
2015年税务稽查工作总结
2015/05/26 职场文书
医院病假条范文
2015/08/17 职场文书
只用Python就可以制作的简单词云
2021/06/07 Python
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android
java解析XML详解
2021/07/09 Java/Android