继承:子类继承父类的属性和方法  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. openssl-devel和openssl 是什么具体关系

    [转自] https://zhidao.baidu.com/question/919579491101051499.html Redhat在封装openssl的时候,把openssl分成了几个部分,执 ...

  2. casper爬虫操作记录

    phantom.outputEncoding = "gbk"; var fs=require("fs") //var data = fs.read(" ...

  3. 【总结】ettercap工具之DNS劫持

    在arp欺骗成功基础上开始进行dns劫持,,, 1.修改/etc/ettercap/etter.dns文件内容,如下图所示. 将所有域名解析到192.168.1.250地址上,,, 2.etterca ...

  4. 常用维护SQL-数据清理

    truncate某个库的表数据 show full processlist; select concat('truncate table ',table_schema,'.',table_name,' ...

  5. 5. AQS(AbstractQueuedSynchronizer)抽象的队列式的同步器

    5.1 AbstractQueuedSynchronizer里面的设计模式--模板模式 模板模式:父类定义好了算法的框架,第一步做什么第二步做什么,同时把某些步骤的实现延迟到子类去实现. 5.1.1 ...

  6. (Frontend Newbie)Web三要素(三)

    上一篇简单介绍了Web三要素中的层叠样式表,本篇主要介绍三要素中最后一个,也是最难掌握的一个-----JavaScript. JavaScript 老规矩不能破,先简要交代 JavaScript 的历 ...

  7. andoid 多线程断点下载

    本示例介绍在Android平台下通过HTTP协议实现断点续传下载. 我们编写的是Andorid的HTTP协议多线程断点下载应用程序.直接使用单线程下载HTTP文件对我们来说是一件非常简单的事.那么,多 ...

  8. unity向量-数学-三角函数

    1.如何在unity写cos60 Mathf.Cos(Mathf.Deg2Rad * ) Deg2Rad将 60 角度转换为弧度,因为里面参数只能填弧度数 2.计算一个Vector3绕旋转中心旋转指定 ...

  9. 绘图神器-matplotlib入门

    这次,让我们使用一个非常有名且十分有趣的玩意儿来完成今天的任务,它就是jupyter. 一.安装jupyter matplotlib入门之前,先安装好jupyter.这里只提供最为方便快捷的安装方式: ...

  10. Razor语句(VIew)小知识

    1.可以写后台语句 例如: