python之7-2类的继承与多态
类的继承的意思就如同父子关系一样,这个儿子继承了父亲的一切,但是在某些地方(属性)相同的时候,儿子的属性大于老子的属性(覆盖),最底层类,总会继承最接近它的那个类的属性init
类的多态总是和继承相连的,没有继承,就没有多态一说.一个子类的实例,它即属于这个子类,也属于父类,比如:父亲A和儿子B,儿子B即属于儿子类,也属于人类,但是它不属于父亲类
多态是面向对象语言的一个基本特性,多态意味着变量并不知道引用的对象是什么,根据引用对象的不同表现不同的行为方式。在处理多态对象时,只需要关注它的接口即可
多态的实际用法是构建一个类外函数 ,函数的参数为指向类对象的变量,然后函数体返回这个变量(类对象)的方法。这样子,调用函数就可以根据实例类型,来返回对应的方法。
例如下面这个例子:
#!/usr/bin/env python # coding=utf-8 #定义一个父类人类 class humen(object): def __init__(self,name,eye=2,age=None): self.name = name self.eye = eye self.age = age def action(self): print "%s有%u个eye,这个人已经有%u岁了" %(self.name,self.eye,self.age) class father(humen): def action(self): print "我是%s,是一名父亲" %self.name class son(father): def action(self): print "我是%s,是一名的儿子" %self.name one = humen("one",2,20) tom = father('tom') david = son('david') def actiont(hm): return hm.action() actiont(one) actiont(tom) actiont(david)
aaa103439@aaa103439-pc:~/桌面/python$ python test7_类_多态.py
one有2个eye,这个人已经有20岁了
我是tom,是一名父亲
我是david,是一名的儿子
- 如果想要实现在儿子实例中输出父亲实例的属性,则可以做如下修改:
#!/usr/bin/env python # coding=utf-8 #定义一个父类人类 class humen(object): def __init__(self,name,eye=2,age=None): self.name = name self.eye = eye self.age = age def action(self): print "%s有%u个eye,这个人已经有%u岁了" %(self.name,self.eye,self.age) class father(humen): namef = [] def __init__(self,name): self.name = name father.namef = name def action(self): print "我是%s,是一名父亲" %self.name class son(humen): def action(self): print "我是%s,是%s的儿子" %(self.name,father.namef) one = humen("one",2,20) tom = father('tom') david = son('david') bob = father('bob') micheal = son('micheal') def actiont(hm): return hm.action() actiont(one) actiont(tom) actiont(david) actiont(bob) actiont(micheal)
aaa103439@aaa103439-pc:~/桌面/python$ python test7_类_多态.py
one有2个eye,这个人已经有20岁了
我是tom,是一名父亲
我是david,是bob的儿子
我是bob,是一名父亲
我是micheal,是bob的儿子
- 注释:这里将son的父类替换为了human,目的就是在son类实例调用的父类的时候,避免了father类中列表namef的最后一个元素追加进son类实例的元素
python之7-2类的继承与多态的更多相关文章
- Python 基础之面向对象类的继承与多态
一.继承 定义:一个类除了拥有自身的属性方法之外,还拥有另外一个类的属性和方法继承: 1.单继承 2.多继承子类: 一个类继承了另外一个类,那么这个类是子类(衍生类)父类:一个类继承了另外一个类,被继 ...
- Python学习(七)面向对象 ——继承和多态
Python 类的继承和多态 Python 类的继承 在OOP(Object Oriented Programming)程序设计中,当我们定义一个class的时候,可以从某个现有的class 继承,新 ...
- 【JAVA零基础入门系列】Day13 Java类的继承与多态
继承是类的一个很重要的特性,什么?你连继承都不知道?你是想气死爸爸好继承爸爸的遗产吗?(滑稽) 开个玩笑,这里的继承跟我们现实生活的中继承还是有很大区别的,一个类可以继承另一个类,继承的内容包括属性跟 ...
- 【游戏开发】在Lua中实现面向对象特性——模拟类、继承、多态
一.简介 Lua是一门非常强大.非常灵活的脚本语言,自它从发明以来,无数的游戏使用了Lua作为开发语言.但是作为一款脚本语言,Lua也有着自己的不足,那就是它本身并没有提供面向对象的特性,而游戏开发是 ...
- 【转载】【游戏开发】在Lua中实现面向对象特性——模拟类、继承、多态
[游戏开发]在Lua中实现面向对象特性——模拟类.继承.多态 阅读目录 一.简介 二.前提知识 三.Lua中实现类.继承.多态 四.总结 回到顶部 一.简介 Lua是一门非常强大.非常灵活的脚本语 ...
- python类的继承和多态
现在属于是老年人的脑子,东西写着写着就忘了,东西记着记着就不知道了.之前学C++的时候就把类.对象这块弄得乱七八糟,现在是因为很想玩python,所以就看看python的类和对象. 就像说的,类有三个 ...
- python 基础 5.2 类的继承
一. 类的继承 继承,顾名思议就知道是它的意思,举个例子说明,你现在有一个现有的A类,现在需要写一个B类,但是B类是A类的特殊版,我们就可以使用继承,B类继承A类时,B类会自动获得A类的所有属性和方法 ...
- python类的继承和多态,获取对象信息
继承 类的继承机制使得子类可以继承父类中定义的方法,拥有父类的财产,比如有一个Animal的类作为父类,它有一个eat方法: class Animal(object): def __init__(se ...
- 【我要学python】面对对象编程之继承和多态
class animal(object): def run(): print('animal is running...') class dog(animal): def run(self): pri ...
随机推荐
- Linux 下让进程在后台可靠运行的几种方法
想让进程在断开连接后依然保持运行?如果该进程已经开始运行了该如何补救? 如果有大量这类需求如何简化操作? 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一 ...
- 菜鸟学习SSH(一)——Struts实现简单登录(附源码)
从今天开始,一起跟各位聊聊java的三大框架——SSH.先从Struts开始说起,Struts对MVC进行了很好的封装,使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时 ...
- Unity3d个人信息开发流程
1.首先先对需要交互的属性进行G/S,比如声明金币的属性 private int _coin; public String Coin{ get{ return _coin; } set{ return ...
- Event 元标签中的代码提示问题
自定的事件可以利用Event元标签在支持该事件的类里面做绑定,绑定后FlashBuilder会有代码提示,以提示该类支持的事件类型 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 ...
- ashx一般处理程序文件用处
今天逛博客园,无意发现一篇好文章,关于ashx文件的使用. 文章一:向服务器发送josn字符串,服务器端解析 本文转载:http://www.cnblogs.com/yzenet/p/3470388. ...
- Android ImageView 图片设置为透明
方法一: 在xml中,设置如下 <ImageView android:id="@+id/xx_id" android:layout ...
- mybatis 与 ehcache 整合[转]
1.简介 MyBatis 是支持普通SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的JDBC 代码和参数的手工设置以及结果集的检索. Ehcache 是现在最流行的纯 ...
- 关于Yaffs2在u-boot中的支持
开发板是一块2G的MLC的NandFlash,页大小8k+512,为其移植u-boot到yaffs2这了.以前在Mini2440上移植过2k+64的slc的NandFlash的Yaffs2支持,当然也 ...
- TCP/IP之分层
网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能.一个协议族,比方T C P / I P,是一组不同层次上的多个协议的组合.T C P / I P通常被觉得是一个四层协议系统. 1.每层的 ...
- Linux cpuinfo 详解
在Linux系统中,如何详细了解CPU的信息呢? 当然是通过cat /proc/cpuinfo来检查了,但是比如几个物理CPU/几核/几线程,这些问题怎么确定呢? 经过查看,我的开发机器是1个物理C ...