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多进程通信Queue、Pipe、Value、Array实例
Nov 21 Python
Python实现获取域名所用服务器的真实IP
Oct 25 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
Aug 25 Python
Python数据分析matplotlib设置多个子图的间距方法
Aug 03 Python
PyQt5实现简易计算器
May 30 Python
Python for循环与range函数的使用详解
Mar 23 Python
flask的orm框架SQLAlchemy查询实现解析
Dec 12 Python
在Pytorch中计算自己模型的FLOPs方式
Dec 30 Python
Python 定义只读属性的实现方式
Mar 05 Python
Python文本文件的合并操作方法代码实例
Mar 31 Python
Python之字符串的遍历的4种方式
Dec 08 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
overlord人气高涨,却被菲利普频繁举报,第四季很难在国内上映
2020/05/06 日漫
用PHP 4.2书写安全的脚本
2006/10/09 PHP
php计算两个日期相差天数的方法
2015/03/14 PHP
详解如何实现Laravel的服务容器的方法示例
2019/04/15 PHP
jQuery 第二课 操作包装集元素代码
2010/03/14 Javascript
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
WEB高性能开发之疯狂的HTML压缩
2010/06/19 Javascript
某页码显示的helper 少量调整,另附js版
2010/09/12 Javascript
iframe 父窗口和子窗口相互的调用方法集锦
2010/12/15 Javascript
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
JavaScript splice()方法详解
2020/09/22 Javascript
JQuery记住用户名和密码的具体实现
2014/04/04 Javascript
sails框架的学习指南
2014/12/22 Javascript
Jquery获取radio选中的值
2017/05/05 jQuery
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
react配置antd按需加载的使用
2019/02/11 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
2019/05/16 Javascript
vue实现跨域的方法分析
2019/05/21 Javascript
Vue路由对象属性 .meta $route.matched详解
2019/11/04 Javascript
Python基于select实现的socket服务器
2016/04/13 Python
Python的标准模块包json详解
2017/03/13 Python
python实现list元素按关键字相加减的方法示例
2017/06/09 Python
Python去除、替换字符串空格的处理方法
2018/04/01 Python
使用python生成杨辉三角形的示例代码
2018/08/29 Python
python K近邻算法的kd树实现
2018/09/06 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
将Python文件打包成.EXE可执行文件的方法
2019/08/11 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
Python读写Excel表格的方法
2021/03/02 Python
事业单位公务员的职业生涯规划
2014/01/15 职场文书
作风建设整改方案
2014/10/27 职场文书
寒假生活随笔
2015/08/15 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
Python源码解析之List
2021/05/21 Python