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获取指定文件夹下的文件名的方法
Feb 06 Python
python微信跳一跳系列之色块轮廓定位棋盘
Feb 26 Python
Python lambda函数基本用法实例分析
Mar 16 Python
Python使用re模块实现信息筛选的方法
Apr 29 Python
python实现多人聊天室
Mar 31 Python
详细介绍Python进度条tqdm的使用
Jul 31 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
Sep 23 Python
JupyterNotebook 输出窗口的显示效果调整方法
Apr 13 Python
Keras实现支持masking的Flatten层代码
Jun 16 Python
Django中和时区相关的安全问题详解
Oct 12 Python
Python 微信公众号文章爬取的示例代码
Nov 30 Python
python爬虫请求库httpx和parsel解析库的使用测评
May 10 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
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
PHP安装攻略:常见问题解答(三)
2006/10/09 PHP
PHP中其实也可以用方法链
2011/11/10 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
php实现URL加密解密的方法
2016/11/17 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
动态修改DOM 里面的 id 属性的弊端分析
2008/09/03 Javascript
Mootools 1.2教程 类(一)
2009/09/15 Javascript
Javascript解决常见浏览器兼容问题的12种方法
2010/01/04 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
2013/01/23 Javascript
基于jquery实现拆分姓名的方法(纯JS版)
2013/05/08 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
2013/12/12 Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
2014/10/21 Javascript
JS打开新窗口防止被浏览器阻止的方法
2015/01/03 Javascript
jQuery实现的五子棋游戏实例
2015/06/13 Javascript
可以浮动某个物体的jquery控件用法实例
2015/07/24 Javascript
JavaScript模板引擎Template.js使用详解
2016/12/15 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
Node.js 的模块知识汇总
2017/08/16 Javascript
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
webpack写jquery插件的环境配置
2017/12/21 jQuery
在vue2.0中引用element-ui组件库的方法
2018/06/21 Javascript
vue系列之requireJs中引入vue-router的方法
2018/07/18 Javascript
动态内存分配导致影响Javascript性能的问题
2018/12/18 Javascript
解决VUE双向绑定失效的问题
2019/10/29 Javascript
vue动态设置路由权限的主要思路
2021/01/13 Vue.js
从零学Python之入门(二)基本数据类型
2014/05/25 Python
在Python中使用第三方模块的教程
2015/04/27 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
python 命令行传入参数实现解析
2019/08/30 Python
程序设计HTML5 Canvas API
2013/04/08 HTML / CSS
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
技术总监个人的自我评价范文
2013/12/18 职场文书
大学生饮食配送创业计划书
2014/01/04 职场文书
车间质检员岗位职责
2015/04/08 职场文书
Win10鼠标宏怎么设置?win10系统鼠标宏的设置方法
2022/08/14 数码科技