python入門18 繼承和多態
阿新 • • 發佈:2018-11-18
ets 方法 重寫 是否 off 類重寫 bsp erro 汽車
繼承:子類繼承父類的屬性和方法 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 start(self): print(‘car 出發‘) auto.start(self)
car,bus的子類taxi
‘‘‘子類taxi繼承自car,bus‘‘‘ class taxi(car,bus): #多重繼承,先繼承car,再繼承bus def __init__(self): self.passenger = 0 #當前乘客數 self.maxpassenger = 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 繼承和多態