# 经典类与新式类差别主要体现在多继承上
#多继承是从左到有
class People():#经典类
#class People(object):#新式类
def __init__(self,name,age):
self.Name=name
self.Age=age
self.friends=[]
def eat(self):
print('%s is eating'%self.Name)
def talk(self):
print('%s is talking'%self.Name)
def sleep(self):
print('%s is sleeping'%self.Name) class Relationship(object):
def make_friends(self,friend):
print('%s is naking friends with %s'%(self.Name,friend.Name))
self.friends.append(friend)#括号内不能写friend.Name(只是一个字符串),比如改名之后将不顶用,还是以前的名字
class bianxinren(People):#继承
pass#可以什么也不做,之继承
m1=bianxinren('变性人','20')
m1.eat() class Man(People):#继承
def piao(self):
print('%s is piaoing...20s...done'%self.Name)
def sleep(self):#给父类方法增加新功能
People.sleep(self)#不加此语句,将覆盖父类的sleep
print('%s 睡的时间长'%self.Name)
m2=Man('男人','20')
m2.piao()
m2.sleep() class Woman(People,Relationship):#从左到有,先继承People,再继承Relationship
def __init__(self,name,age,type_breast):#重构参数,对构造函数进行重构
#People.__init__(self,name,age)#经典类调用父类,如果有两个父类,需要写两次此代码,用super就不用写两遍,如下
#Relationship.__init__(self,good)假设Relationship.__init__有good
#可将上一步改为self.relationgship=Relationship(self,good),此步属于组合
super(Woman,self).__init__(name,age)#新式类调用父类的另一种方法,此方法更方便
self.type_breast=type_breast
print('%s的罩杯:%s'%(self.Name,self.type_breast))
def born(self):
print('%s is born a baby'%self.Name)
m3=Woman('女人','25','C')
m3.born()
# m3.piao()不能执行,是别的子类的方法 m3.make_friends(m2)
m3.Name='好女人'
print(m3.friends[0].Name)

  

 在python2中经典类是按照深度优先进行继承的,新式类是按照广度优先来进行继承的

 在python3中经典类和新式类均是按照广度优先来继承的

 

参考:http://www.cnblogs.com/alex3714/articles/5188179.html

python_97_类的继承2的更多相关文章

  1. UML类图(上):类、继承和实现

    面向对象设计 对于一个程序员来说,在工作的开始阶段通常都是别人把东西设计好,你来做.伴随着个人的成长,这个过程将慢慢变成自己设计一部分功能来实现,自己实现.如果要自己设计,无论是给自己看,还是给别人看 ...

  2. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  3. (转)Java:类与继承

    原文地址: http://www.cnblogs.com/dolphin0520/p/3803432.html 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大 ...

  4. iBatis.net 类的继承extends和懒加载

    <resultMaps> <resultMap id="FullResultMap" class="t_c_team_member_permission ...

  5. python 类定义 继承

    0 前言 系统:win7 64bit IDE : python(x,y) 2.7.6.1 IDE集成的解释器:Python 2.7.6 (default, Nov 10 2013, 19:24:18) ...

  6. JS原型继承和类式继承

    前言 一个多月前,卤煮读了一篇翻译过来的外国人写的技术博客.此君在博客中将js中的类(构造)继承和原型继承做了一些比较,并且得出了结论:建议诸位在开发是用原型继承.文中提到了各种原型继承的优点,详细的 ...

  7. Java编程里类的继承

    今天,我们将要讨论的内容是Java里面类的继承的相关概念. 说到继承,我相信大家都不陌生.生活中,子承父业,子女继承父母的财产,这就是继承.实际上,Java里的继承也是如此.对于一个类来说,它的数据成 ...

  8. Java:类与继承

    Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关知 ...

  9. swift_Class类的继承

    //: Playground - noun: a place where people can play var str = "Hello, playground" //***** ...

随机推荐

  1. Halcon - 数据类型

    这里给大家分享 Halcon 的数据类型结构图,方便初学者认知 Halcon 图1 Halcon Datatype

  2. 给Fitnesse添加json格式报告

    需求:fitnesse自带xml.junit.html格式报告,现在需要添加json格式的报告,且报告中只展示执行错误的用例信息 修改文件: fitnesse.http.Response.java f ...

  3. python3登陆接口测试

    Python3和Python2有很大的语法区别,在实际的项目中,要注意格式.今天用Python3做一个接口测试,由于没有经验,用Python2的语法,调了半天没有搞定,后来一个大神指点了一下,终于拨开 ...

  4. MySQL学习中,遇到的问题记录

    一.安装mysql时,报错:1045 原因:因为之前安装过mysql,之后再安装会出现这个问题. 解决: 删除之前的残留就好了 方法:清除mysql之前的历史残留

  5. vim如何删除行首、行位空格、空格行

    删除空格行: 非编辑状态下输入:g/^$/d 删除行首空格: 非编辑状态下输入:%s/^\s*//g 删除行尾空格: 非编辑状态下输入:%s/\s*$//g

  6. 搞定vscode编写java

    下载vscode: 地址: https://code.visualstudio.com/ 安装插件 我这里下载的是绿色版,所以解压后 向桌面发送一个快捷方式 找到VS Code 的快捷方式位置: 右键 ...

  7. Linux —— gcc编译文件

    编译过程 预处理: 作用: 负责展开在源文件重定义的宏 操作: g++ -E 源文件.c -o 目标文件.i 汇编: 作用: 将目标文件生成汇编代码文件 操作: g++ -S 目标文件.i -o 汇编 ...

  8. 几款常用的高质量web前端框架

    http://blog.csdn.net/qianduankuangjia/article/details/78042944

  9. Net Core开源日志框架

    Net Core开源日志框架 Exceptionless - .Net Core开源日志框架 作者:markjiang7m2原文地址:https://www.cnblogs.com/markjiang ...

  10. 获取jar包当前的路径

    转自:http://kinganpo.iteye.com/blog/876243 import java.io.File; /** * 获取打包后jar的路径信息 * @author Administ ...