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写入xml文件的方法
May 08 Python
python处理图片之PIL模块简单使用方法
May 11 Python
Python模拟脉冲星伪信号频率实例代码
Jan 03 Python
Python基于辗转相除法求解最大公约数的方法示例
Apr 04 Python
Matplotlib 生成不同大小的subplots实例
May 25 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
Dec 12 Python
Python3实现统计单词表中每个字母出现频率的方法示例
Jan 28 Python
Pytorch之view及view_as使用详解
Dec 31 Python
pandas中read_csv、rolling、expanding用法详解
Apr 21 Python
python给视频添加背景音乐并改变音量的具体方法
Jul 19 Python
Python实现删除某列中含有空值的行的示例代码
Jul 20 Python
Python如何创建装饰器时保留函数元信息
Aug 07 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 根据IP地址控制访问的代码
2010/04/22 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
用js实现的检测浏览器和系统的函数
2009/04/09 Javascript
Javascript 面向对象 重载
2010/05/13 Javascript
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
JS去除右边逗号的简单方法
2013/07/03 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
2013/07/09 Javascript
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
JS制作简单的三级联动
2015/03/18 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
js实现固定显示区域内自动缩放图片的方法
2015/07/18 Javascript
JS实现Fisheye效果动感放大菜单代码
2015/10/21 Javascript
如何获取元素的最终background-color
2017/02/06 Javascript
jQuery实现的鼠标滚轮控制图片缩放功能实例
2017/10/14 jQuery
select获取下拉框的值 下拉框默认选中方法
2018/02/28 Javascript
基于vue中keep-alive缓存问题的解决方法
2018/09/21 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
Python实现提取文章摘要的方法
2015/04/21 Python
Python pymongo模块常用操作分析
2018/09/01 Python
Opencv+Python 色彩通道拆分及合并的示例
2018/12/08 Python
Django获取应用下的所有models的例子
2019/08/30 Python
Python过滤掉numpy.array中非nan数据实例
2020/06/08 Python
CSS3 真的会替代 SCSS 吗
2021/03/09 HTML / CSS
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
介绍一下gcc特性
2012/01/20 面试题
教师师德教育的自我评价
2013/10/31 职场文书
小学新学期教师寄语
2014/01/18 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
模范班主任事迹材料
2014/12/17 职场文书
小学教研工作总结2015
2015/05/13 职场文书
公务员爱岗敬业心得体会
2016/01/25 职场文书
MySQL如何修改字段类型和字段长度
2022/06/10 MySQL
Django框架模板用法详解
2022/06/10 Python