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 list切片原理
Oct 27 Python
Python实现定时精度可调节的定时器
Apr 15 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
Apr 24 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
Aug 04 Python
使用Py2Exe for Python3创建自己的exe程序示例
Oct 31 Python
利用Django模版生成树状结构实例代码
May 19 Python
python如何保证输入键入数字的方法
Aug 23 Python
python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析
Oct 14 Python
Python Process多进程实现过程
Oct 22 Python
python使用rsa非对称加密过程解析
Dec 28 Python
Python基于Socket实现简易多人聊天室的示例代码
Nov 29 Python
python3字符串输出常见面试题总结
Dec 01 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 5.0创建图形的巧妙方法
2010/10/12 PHP
设定php简写功能的方法
2019/11/28 PHP
浅谈Javascript嵌套函数及闭包
2010/11/09 Javascript
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
ie8下修改input的type属性报错的解决方法
2014/09/16 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
2014/10/10 Javascript
JavaScript数据结构与算法之链表
2016/01/29 Javascript
jQuery使用zTree插件实现树形菜单和异步加载
2016/02/25 Javascript
H5上传本地图片并预览功能
2017/05/08 Javascript
es6学习笔记之Async函数基本教程
2017/05/11 Javascript
vue 引入公共css文件的简单方法(推荐)
2018/01/20 Javascript
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
Vue v-for循环之@click点击事件获取元素示例
2019/11/09 Javascript
微信小程序实现注册登录功能(表单校验、错误提示)
2019/12/10 Javascript
[26:24]完美副总裁、DOTA2负责人蔡玮专访:电竞如人生
2014/09/11 DOTA
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
2018/09/13 Python
解决Django中checkbox复选框的传值问题
2020/03/31 Python
详解Python 最短匹配模式
2020/07/29 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
纯CSS实现设置半个字符的样式
2014/07/03 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
电子信息专业学生自荐信
2013/11/09 职场文书
体育教育个人自荐信范文
2013/12/01 职场文书
洗煤厂厂长岗位职责
2014/01/03 职场文书
创意广告词
2014/03/17 职场文书
2014年酒店前台工作总结
2014/11/14 职场文书
学前班语言教学计划
2015/01/20 职场文书
2015年预算员工作总结
2015/05/14 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
解决Jenkins集成SonarQube遇到的报错问题
2021/07/15 Java/Android
CSS实现隐藏搜索框功能(动画正反向序列)
2021/07/21 HTML / CSS