1. 程式人生 > >python入門18 繼承和多態

python入門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 繼承和多態