继承:子类继承父类的属性和方法  class 子类名(父类1,父类2)

多态:子类重写父类的方法

判断对象是否是某个类的实例:  isinstance(object,class)

父类-汽车类

#coding:utf-8
#/usr/bin/python
"""
2018-11-18
dinghanhua
继承 多态
""" '''定义一个父类-汽车类 无参构造函数,私有属性speed,方法start,speedup(每次速度+10),speeddown(每次速度-10),stop'''
class auto:
def __init__(self):
self.__speed = 0 #封装 def __getspeed(self):
return '当前速度:%s'%self.__speed def start(self):
self.__speed = 10 def stop(self):
self.__speed = 0
print('auto 停车') def speedup(self):
self.__speed += 10
print('auto 加速' + self.__getspeed()) def speeddown(self):
if self.__speed > 10:
self.__speed -= 10
print('auto 减速' +self.__getspeed())
else:
self.stop()

子类bus

'''子类bus(auto),增加乘客数量passenger,上车geton,下车getoff.重写start方法--多态'''
class bus(auto): #继承 def __init__(self):
self.passenger = 0 #当前乘客数
self.maxpassenger = 50 # 最大乘客数 def start(self):
print('bus 出发')
auto.start(self) def geton(self,num):
if self.passenger + num <= self.maxpassenger:
self.passenger += num
print('bus 上客,当前乘客数:%s' % self.passenger)
else:
raise OverflowError('bus 超载') def getoff(self,num):
if self.passenger >= num:
self.passenger -= num
print('bus 下客,当前乘客数:%s' % self.passenger)
else:
raise Exception('bus 下车乘客数 多于 当前乘客数')

子类car

'''子类car,重写start方法'''
class car(auto):
def __init__(self):
self.maxpassenger = 4 #最大乘客数 def start(self):
print('car 出发')
auto.start(self)

car,bus的子类taxi

'''子类taxi继承自car,bus'''
class taxi(car,bus): #多重继承,先继承car,再继承bus
def __init__(self):
bus.__init__(self)
car.__init__(self) #注意顺序,最大乘客数=4

函数参数为对象

'''定义一个函数,参数是auto对象'''
def test_auto(autoobject):
autoobject.start()
autoobject.speedup()
autoobject.speeddown()
autoobject.stop()
if isinstance(autoobject, bus): #判断是某个类的实例
autoobject.geton(4)
autoobject.getoff(2)

实例化对象

if __name__ == '__main__':

    #实例化
auto1 = auto()
car1 = car()
bus1 = bus()
taxi1 = taxi()
    #调用函数test_auto
test_auto(auto1)

    test_auto(car1)

test_auto(bus1) 

test_auto(taxi1)

分别调用的是:car.start(), auto.speedup(),auto.speeddown(),auto.stop(), bus.geton(),bus.getoff()

the end!

python入门18 继承和多态的更多相关文章

  1. Python 面向对象编程 继承 和多态

    Python 面向对象编程 继承 和多态 一:多继承性 对于java我们熟悉的是一个类只能继承一个父类:但是对于C++ 一个子类可以有多个父亲,同样对于 Python一个类也可以有多个父亲 格式: c ...

  2. Python 中的继承、多态和封装

    涉及问题: Python 中如何实现多继承,会有什么问题? Python 中的多态与静态方法有什么区别? 答案要点如下: Python 中的继承,就是在定义类时,在括号中声明父类,简单示例如下: cl ...

  3. Python面向对象:继承和多态

    继承与多态简介: 继承可以把父类的所有功能都直接拿过来,这样就不必重零做起,子类只需要新增自己特有的方法,也可以把父类不适合的方法覆盖重写. 动态语言的鸭子类型特点决定了继承不像静态语言那样是必须的. ...

  4. python类的继承和多态

    现在属于是老年人的脑子,东西写着写着就忘了,东西记着记着就不知道了.之前学C++的时候就把类.对象这块弄得乱七八糟,现在是因为很想玩python,所以就看看python的类和对象. 就像说的,类有三个 ...

  5. Python入门之面向对象的多态和继承

    本章内容 Python面向对象的多态和继承对比 ========================================= 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的 ...

  6. python中的继承和多态

    继承 继承的表现方式: class Animal(): pass class Cat(Animal): #animal是cat的父类,也可以说是基类 pass print(Cat.__bases__) ...

  7. Python笔记(三)继承和多态、动态语言

    一.继承 先定义一个A类 class A(object): def fun(self): print "Run A fun()" 在定义一个B类 class B(A): pass ...

  8. python大法好——继承、多态

    1.继承 类的继承 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制. 通过继承创建的新类称为子类或派生类,被继承的类称为基类.父类或超类. 继承语法 class 派 ...

  9. Python入门之面向对象的多态

    本章目录: 一.多态 二.多态性 三.鸭子类型 ============================== 一.多态 多态指的是一类事物有多种形态. 动物有多种形态:人,狗,猪. import ab ...

随机推荐

  1. SPOJ - AMR11

    A Thanks a lot for helping Harry Potter in finding the Sorcerer's Stone of Immortality in October. D ...

  2. selenium 安装与环境配置

    selenium的安装 环境配置:python2.7+selenium2+Firefox46以下版本 本次安装环境:python2.7.13+selenium2.53.6+Firefox46 官网下载 ...

  3. oracle 基础知识(三)--SCN

    一,SCN的介绍     SCN(System Change Number),也就是通常所说的系统改变号或者系统提交号,是数据库中非常重要的一个数据结构. SCN用以标识数据库在某个确切时刻提交的版本 ...

  4. AutoFac之 Named and Keyed 方式注入

    AutoFac是.net framework下一个高效的ioc容器,传说中的效率最快(我偷偷看了几篇测试博文,确实这个容器的效率遥遥领先). 好了废话不多说,AutoFac的使用方式请看:http:/ ...

  5. 使用jxl读取excel内容,并转换成Json,用于Datagrid

    一.上传excel文件,得到InputStream,由InputStream得到Jxl中的Workbook,取出内容,存到二维数组中. 1.使用 Jquery Uploadify 插件(http:// ...

  6. 揭秘TDSQL全时态数据库系统的核心技术

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯技术工程官方号发表在腾讯云+社区 Design 本节讨论T-TDSQL的关键之处,即影响T-TDSQL架构的设计之处.一是新的数据 ...

  7. win7远程登录

    开始--附件--远程桌面连接 点击显示选项 填写信息,连接上了. 分配磁盘 计算机---右键----管理

  8. 深入学习keepalived之一 keepalived的启动

    1.keepalived的启动过程: 启动健康检查子进程和vrrp子进程.其中_WITH_LVS_,_WITH_VRRP_在configure和configure.in文件中定义. 源码如下: /* ...

  9. IE7不兼容slideDown()

    IE7下,使用slideDown()方法,可能出现以下两种问题: 一.下拉动画变形,最终定格时正常 二.下拉动画正常,最终定格时消失

  10. javascript模块化是什么及其优缺点介绍

    模块化是一种将系统分离成独立功能部分的方法,可将系统分割成独立的功能部分,严格定义模块接口.模块间具有透明性 如今backbone.emberjs.spinejs.batmanjs 等MVC框架侵袭而 ...