下面举一个例子,同样的代码使用 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. 自动加载的iframe高度自适应

    动态产生iframe,自动加载至body中,还有一个功能就是iframe的高度自适应,下面代码测试于IE和Firefox,Chrome:

  2. HDU6197

    array array array Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  3. js点击获取标签元素

     14.数组去重 方法一:利用冒泡 function elementName(evt){ evt = evt|| window.event; // IE: window.event // IE用src ...

  4. Thinkphp+ECharts生成柱状图

    1.首先进ECharts官网下载echarts.js 点击下载,结合TP5讲解,主要代码在js里面,更多请到ECharts官网 2.引进echarts.js <!DOCTYPE html> ...

  5. DOM基础练习代码(二)

    上一篇给大家的三段代码不知到大家有没有练习呢?今天再给大家带来两段DOM的练习! 4.封装函数,实现children功能,最好哎原型链上编程 Element.prototype.getChildren ...

  6. eclipse以O开头的版本安装tomcat插件

    最近闲着无聊想着捣鼓下java web ,轻车熟路的在eclipse下载好IDE,有强迫症的我下载了最新版本的(2017-10),然而下载过来的IDE真的是纯净版的,连java web 的new pr ...

  7. 将数据导入MongoDB集群与MySQL

    import sys import json import pymongo import datetime from pymongo import MongoClient client = Mongo ...

  8. JavaScript数组转字符串,字符串转数组

    //--------------------数组转字符串--------------------------- //需要将数组元素用某个字符连接成字符串 var a1, b1,c1; a1 = [&q ...

  9. Expo大作战(八)--expo中的publish以及expo中的link,对link这块东西没有详细看,大家可以来和我交流

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,将全部来与官网 我猜去全部机翻+个人 ...

  10. linux chmod 给目录或文件赋权限 可读可写可执行

    前提:  mode权限设定字串,格式:[ugoa...][[+-=][rwxX]...][,...] 其中u表示拥有者(user),g表示与拥有者属于同一个群体(group),o表示其他以外的人(ot ...