python入門18 繼承和多型

2022-07-08 06:36:10 字數 3385 閱讀 3528

繼承:子類繼承父類的屬性和方法  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

defstart(self):

self.

__speed = 10

defstop(self):

self.

__speed =0

print('

auto 停車')

defspeedup(self):

self.

__speed += 10

print('

auto 加速

' + self.__getspeed

())

defspeeddown(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 #

最大乘客數

defstart(self):

print('

bus 出發')

auto.start(self)

defgeton(self,num):

if self.passenger + num <=self.maxpassenger:

self.passenger +=num

print('

bus 上客,當前乘客數:%s

' %self.passenger)

else

:

raise overflowerror('

bus 超載')

defgetoff(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 #

最大乘客數

defstart(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

分別呼叫的是:car.start(), auto.speedup(),auto.speeddown(),auto.stop(), bus.geton(),bus.getoff()

the end!

1 8 繼承和多型

lambda表示式 單繼承 向下轉型 sonclass a sonclass fatherclass 可以使用 override來註解 宣告為final的方法不能被重寫 宣告為static的方法不能被重寫,但能再次宣告 子類與父類在同乙個包中,子類可以重寫除private和final外的方法 子類與...

Python 繼承和多型

廖雪峰python 教程筆記 class animal object 父類 def run self print animal is running.class dog animal 子類 def run self print dog is running.class cat animal 子類 d...

python的繼承和多型

繼承和多型 class animal def eat self print animal is eating class bird animal 繼承animal類 def sing self print bird is singing class dog animal def eat self 該...