概念

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.

参考文档

最新文章

  1. 解决安装完centos6.6之后/etc/sysconfig/目录下没有iptables 的问题
  2. c# 模拟get和post
  3. JSTL(JSP Standard Tag Library)读书笔记
  4. C#使用ICSharpCode.SharpZipLib.dll压缩多个文件
  5. .net远程连接oracle数据库不用安装oracle客户端的方法
  6. Laravel学习第一天(创建laravel项目、路由、视图、blade模板)
  7. python学习的一些感悟
  8. Python----Tornado安装
  9. XP里面其实也讲究admin的执行权限
  10. pentaho之kettle篇---kettle基本操作
  11. JavaScript 实现发布消息后,距离当前时间的实现
  12. OpenStack Horizon创建虚拟机时增加虚拟机OS用户
  13. (WCF初体验)WCF的认证和消息保护
  14. 面试必问!Java 多线程中两个线程交替执行,一个输出偶数,一个输出奇数
  15. ios之库Protobuf的使用
  16. centos 搭建git服务器和客户端
  17. 《Linux内核设计与实现》读书笔记 5
  18. resultMap自定义某个javaBean的封装规则代码
  19. 2.15 富文本(richtext)
  20. bzoj 2286(洛谷 2495) [Sdoi2011]消耗战——虚树

热门文章

  1. Flex容器拖动(Bordercontainer为例)
  2. docker实例之mysql的使用
  3. 【2018寒假集训 Day2】【动态规划】垃圾陷阱(挖坑等填,未完成)
  4. HT Vue 集成
  5. .NET自动化对象映射
  6. 少用float浮动?
  7. Spring的相关注解
  8. JavaEE基础(01):Servlet实现方式,生命周期执行过程
  9. 虚拟环境创建的另外一种方法:anaconda
  10. 求局域网内所有在线主机的ip