python入门18 继承和多态
Posted dinghanhua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python入门18 继承和多态相关的知识,希望对你有一定的参考价值。
继承:子类继承父类的属性和方法 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 继承和多态的主要内容,如果未能解决你的问题,请参考以下文章
Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)
Python入门-6面向对象编程:07面向对象三大特征(封装继承多态)-继承
Python从入门到精通(十四)Python面向对象的开发2,封装,多继承,多态都了解了么