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多线程用法实例详解
Jan 15 Python
浅谈Python中列表生成式和生成器的区别
Aug 03 Python
python3使用PyMysql连接mysql数据库实例
Feb 07 Python
python构建深度神经网络(续)
Mar 10 Python
python 编码规范整理
May 05 Python
python发送邮件脚本
May 22 Python
python 公共方法汇总解析
Sep 16 Python
浅谈JupyterNotebook导出pdf解决中文的问题
Apr 22 Python
Numpy一维线性插值函数的用法
Apr 22 Python
详解使用scrapy进行模拟登陆三种方式
Feb 21 Python
一篇文章弄懂Python关键字、标识符和变量
Jul 15 Python
python数字图像处理之对比度与亮度调整示例
Jun 28 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
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
php 面向对象的一个例子
2011/04/12 PHP
一些需要禁用的PHP危险函数(disable_functions)
2012/02/23 PHP
mysql查找删除重复数据并只保留一条实例详解
2016/09/24 PHP
Open and Print a Word Document
2007/06/15 Javascript
常用简易JavaScript函数
2009/04/09 Javascript
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
2013/06/06 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
2014/06/23 Javascript
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
浅谈javascript中的 “ && ” 和 “ || ”
2017/02/02 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
2017/05/20 Javascript
javascript计算渐变颜色的实例
2017/09/22 Javascript
Vue 中使用 CSS Modules优雅方法
2018/04/09 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
微信小程序实现顶部导航特效
2019/01/28 Javascript
JS数组Object.keys()方法的使用示例
2019/06/05 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
2019/09/09 Javascript
layui 实现表单和文件上传一起传到后台的例子
2019/09/16 Javascript
[01:40]2014DOTA2国际邀请赛 三冰SOLO赛后采访恶搞
2014/07/09 DOTA
python妙用之编码的转换详解
2017/04/21 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
PyCharm2019安装教程及其使用(图文教程)
2019/09/29 Python
Python类如何定义私有变量
2020/02/03 Python
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
自荐信格式简述
2014/01/25 职场文书
团干部培训方案
2014/06/03 职场文书
投资意向书
2014/07/30 职场文书
何玥事迹观后感
2015/06/16 职场文书
单位收入证明范本
2015/06/18 职场文书
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js
Python中的套接字编程是什么?
2021/06/21 Python
如何用六步教会你使用python爬虫爬取数据
2022/04/06 Python
深入理解pytorch库的dockerfile
2022/06/10 Python
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS