下面举一个例子,同样的代码使用 python2 和 python3 写的,大家注意两段程序中红色加粗的部分:

python2的类继承使用super方法:

 #-*-  coding:utf-8 -*-
'''
Created on 2018年8月27日 @author: anyd
'''
import random as r class Fish(object):
def __init__(self):
self.x = r.randint(0, 10)
self.y = r.randint(0, 10) def move(self):
#这里主要演示类的继承机制,就不考虑检查场景边界和移动方向的问题
#假设所有鱼都是一路向西游
self.x -= 1
print "我的位置是:", self.x, self.y class Goldfish(Fish):
pass class Carp(Fish):
pass class Salmon(Fish):
pass #上边几个都是食物,食物不需要有个性,所以直接继承Fish类的全部属性和方法即可
#下边定义鲨鱼类,这个是吃货,除了继承Fish类的属性和方法,还要添加一个吃的方法 class Shark(Fish):
def __init__(self):
super(Shark,self).__init__()
self.hungry = True def eat(self):
if self.hungry:
print "吃货的梦想就是天天有的吃^_^"
self.hungry = False
else:
print "太撑了,吃不下了!" aa = Shark()
aa.move()

输出如下:

我的位置是: 8 2

  

python3的类继承使用super方法:

 #-*-  coding:utf-8 -*-
'''
Created on 2018年8月27日 @author: anyd
'''
import random as r class Fish(object):
def __init__(self):
self.x = r.randint(0, 10)
self.y = r.randint(0, 10) def move(self):
#这里主要演示类的继承机制,就不考虑检查场景边界和移动方向的问题
#假设所有鱼都是一路向西游
self.x -= 1
print ("我的位置是:", self.x, self.y) class Goldfish(Fish):
pass class Carp(Fish):
pass class Salmon(Fish):
pass #上边几个都是食物,食物不需要有个性,所以直接继承Fish类的全部属性和方法即可
#下边定义鲨鱼类,这个是吃货,除了继承Fish类的属性和方法,还要添加一个吃的方法 class Shark(Fish):
def __init__(self):
super().__init__()
self.hungry = True def eat(self):
if self.hungry:
print ("吃货的梦想就是天天有的吃^_^")
self.hungry = False
else:
print ("太撑了,吃不下了!") aa = Shark()
aa.move()

输出如下:

我的位置是: 7 4

  

super方法具体使用注意事项可以参考官方的指导文档,里面有详细的使用例子,但个人觉得这种super方法不太容易让人看得舒服,个人比较偏好采用未绑定的方法来写,这样就不管是python2 还是 python3,都是没有问题的。如下:

 class Shark(Fish):
def __init__(self):
Fish.__init__(self)
self.hungry = True

[python] 在 python2和3中关于类继承的 super方法简要说明的更多相关文章

  1. 【转】doxygen+graphviz生成工程中的类继承树及函数调用图

    转自----hequn8128 在阅读代码量比较多的项目时,类的继承树和函数调用图能够直观地向我们显示类之间或者函数之间的各种关系,方便我们了解程序的整体框架,很多时候可以起到事半功倍的作用.这里尝试 ...

  2. C++中的类继承之单继承&多继承&菱形继承

     C++中的类继承之单继承&多继承&菱形继承 单继承是一般的单一继承,一个子类只 有一个直接父类时称这个继承关系为单继承.这种关系比较简单是一对一的关系: 多继承是指 一个子类有两个或 ...

  3. ES6中的类继承和ES5中的继承模式详解

    1.ES5中的继承模式 我们先看ES5中的继承. 既然要实现继承,首先我们得要有一个父类. Animal.prototype.eat = function(food) { console.log(th ...

  4. python's twenty day for me 继承 和 super()方法

    super(): 在单继承中就是单纯的寻找父类. 在多继承中就是根据子节点所在图 的mro顺序,找寻下一个类. 遇到多继承和super(): 对象.方法 1,找到这个对象对应的类. 2,将这个类的所有 ...

  5. JavaScript类继承, 用什么方法好

    JavaScript类继承, 用什么方法好 一个实例: 基类Car: function Car(color, year) { this.name = "car"; this.col ...

  6. python中的类,对象,方法,属性等介绍

    注:这篇文章写得很好.加底纹的是我自己的理解 python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性( ...

  7. python2和python3中的类

    经典类与新式类 例如: A B C D 四个类 D 包含 BC :   B和C分别包含A py2 在经典类中是按深度优先来继承 例如: D中查找B,B没有从A中查找 新式类中是按广度优先来查找继承的 ...

  8. Python 动态从文件中导入类或函数的方法

    假设模块文件名是data_used_to_test.py,放在tests文件夹下 文件夹结构如下: project |-tests |-data_used_to_test.py 文件内包含一个test ...

  9. python 全栈开发,Day20(object类,继承与派生,super方法,钻石继承)

    先来讲一个例子 老师有生日,怎么组合呢? class Birthday: # 生日 def __init__(self,year,month,day): self.year = year self.m ...

随机推荐

  1. 多表关联解决数据在MVC显示

    由于子表的某些字段是父表的外键,正常情况之下,显示的只是一个键值.如下图的Highlight列,如果这样显示,确实不友好. 如果是在创建或是编辑的模式之下,我们可以使用下拉菜单来解决,如<Htm ...

  2. MVC的注意事项及开发技巧

    演示产品源码下载地址:http://www.jinhusns.com 

  3. 推荐《Java编程思想》

    最近看了(美)Bruce Eckel 著<Java编程思想>,还没有看完,但是极力推荐.尤其是学完一遍基础之后,再看很有感觉.之前学习基础的时候就买了这本书,那时候也真心看不下去,包括现在 ...

  4. 常见的NoSQL数据库

    NoSQL数据库发展迅猛,据说现在已经有上百种NoSQL数据库了,下面来了解下常见的一些NoSQL数据库 先来看张表,了解下典型的NoSQL数据库的分类 临时性键值存储 永久性键值存储 面向文档的数据 ...

  5. 愿你走出半生,归来仍是Java Parser

    几天前,我的一个朋友给了我一个Haskell问题 Hey, MK,假设我有个BNF,并且我在Haskell中有个这个BNF的parser.现在,我想给这个BNF改一行,有没有办法不用动这个BNF pa ...

  6. POJ3468(KB7-C 线段树)

    A Simple Problem with Integers Time Limit: 5000MS  Memory Limit: 131072K Total Submissions: 108903   ...

  7. babel 编译后 this 变成了 undefined

    最近有在用webpack,使用了babel这个模块来编译js jsx文件,但是发现文件编译后this变成了undefined. 源文件 module.exports = React.createCla ...

  8. Nginx的介绍

    1.什么是NGINX: Nginx是一个开源的,支持高性能的.支持高并发的web服务软件和代理服务软件,它是由俄罗斯人lgor Sysoev开发的 Nginx具有高并发(特别是对于静态资源)占用系统资 ...

  9. JSP内置对象——page对象

    观察可发现,这里面的方法,就是Object这个类下的一些方法,下面进行一个简单的演示,比如“toString()”方法: 运行结果: 这时候看到了一个“org.apache.jsp.page_jsp@ ...

  10. SQLServer 学习笔记之超详细基础SQL语句 Part 2

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 1------------------- 建立如下数据表 CREATE ...