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使用Bottle来提供一个简单的web服务
Dec 27 Python
dataframe设置两个条件取值的实例
Apr 12 Python
Python实现压缩文件夹与解压缩zip文件的方法
Sep 01 Python
Python函数装饰器常见使用方法实例详解
Mar 30 Python
python实现连连看辅助(图像识别)
Mar 25 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
Aug 12 Python
手写一个python迭代器过程详解
Aug 27 Python
python 公共方法汇总解析
Sep 16 Python
python实现大战外星人小游戏实例代码
Dec 26 Python
python+adb+monkey实现Rom稳定性测试详解
Apr 23 Python
python实现密码验证合格程序的思路详解
Jun 01 Python
Pycharm自带Git实现版本管理的方法步骤
Sep 18 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使用smtp发送支持附件的邮件示例
2014/04/13 PHP
修改ThinkPHP缓存为Memcache的方法
2014/06/25 PHP
CI框架Session.php源码分析
2014/11/03 PHP
PHP中echo与print区别点整理
2021/03/09 PHP
var与Javascript变量隐式声明
2009/09/17 Javascript
a标签的href和onclick 的事件的区别介绍
2013/07/26 Javascript
理解javascript回调函数
2014/12/28 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
JavaScript中对JSON对象的基本操作示例
2016/05/21 Javascript
Javascript OOP之面向对象
2016/07/31 Javascript
JS简单实现点击复制链接的方法
2016/08/03 Javascript
移动端点击态处理的三种实现方式
2017/01/12 Javascript
mongoose更新对象的两种方法示例比较
2017/12/19 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
Vue.js点击切换按钮改变内容的实例讲解
2018/08/22 Javascript
vue中利用iscroll.js解决pc端滚动问题
2020/02/15 Javascript
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
react antd表格中渲染一张或多张图片的实例
2020/10/28 Javascript
python实现简单ftp客户端的方法
2015/06/28 Python
Python中列表元素转为数字的方法分析
2016/06/14 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
python实现抖音视频批量下载
2018/06/20 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
2018/08/25 Python
Python中使用logging和traceback模块记录日志和跟踪异常
2019/04/09 Python
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
中专毕业生自我鉴定范文
2013/11/09 职场文书
总经理岗位职责范本
2014/02/02 职场文书
大三学生做职业规划:给未来找个方向
2014/02/24 职场文书
信息技术毕业生自荐信范文
2014/03/13 职场文书
工作保证书范文
2014/04/29 职场文书
农村优秀教师事迹材料
2014/08/27 职场文书
车辆管理制度范本
2015/08/05 职场文书
大学生活感想
2015/08/10 职场文书
MySQL 那些常见的错误设计规范,你都知道吗
2021/07/16 MySQL