python 多型性 Python 多型

2021-10-11 19:34:53 字數 1843 閱讀 3035

[返回python教程首頁]

多型介紹多型之前,我們先看看什麼叫方法重寫。

方法重寫

子類繼承父類,會繼承父類的所有方法,當父類方法無法滿足需求,可在子類中定義乙個同名方法覆蓋父類的方法,這就叫方法重寫。當子類的例項呼叫該方法時,優先呼叫子類自身定義的方法,因為它被重寫了。

例如:class people:

def speak(self):

print("people is speaking")

class student(people):

#方法重寫。重寫父類的speak方法

def speak(self):

print("student is speaking")

class teacher(people):

pass

#student類的例項s

s = student()

s.speak()

#teacher類的例項t

t = teacher()

t.speak()

輸出結果:

student is speaking

people is speaking

因為子類student重寫了父類people的speak()方法,當student類的物件s呼叫speak()方法,優先呼叫student的speak方法,而teacher()類沒有重寫people的speak方法,所以會t.speak()呼叫父類的speak()方法,列印people is speaking。

多型特性

多型意味著變數並不知道引用的物件是什麼,根據引用物件的不同表現不同的行為方式。

例如:#**塊a。定義animal類,dog類,cat類

class animal:

def eat(self):

print("animal is eatting")

class dog(animal):

def eat(self):

print("dog is eatting")

class cat(animal):

def eat(self):

print("cat is eatting")

#**塊b。定義eatting_double方法,引數為animal型別

def eatting_double(animal):

animal.eat()

animal.eat()

#**塊c。**執行區,相當於main方法。

animal = animal()

dog = dog()

cat = cat()

eatting_double(animal)

eatting_double(dog) #接收的引數必須是擁有eat方法的物件,否則執行報錯

eatting_double(cat)

輸出結果:

animal is eatting

animal is eatting

dog is eatting

dog is eatting

cat is eatting

cat is eatting

上述**中,dog類繼承自animal類,重寫了animal的eat法。**塊b定義了eatting_double法,**塊c呼叫了該方法,多型的特性可以使得當我們再定義乙個新的animal子類——cat類時,不需要修改eatting_double法的方法體,同樣可以通過eatting_double(cat)來呼叫tiger的eat法,只需要cat類正確地定義eat方法。

總結子類繼承父類,可以繼承父類的所有方法,當父類的方法不滿足需求時,還可以重寫父類的方法,只需方法名稱和基類的方法名稱保持相同即可,另外子類還能定義自己特有的方法。

Python 多型與多型性

同一種事務的多種形態 就是多型 車有多種形態,你沒有具體學習某乙個物件,你是學的怎麼開車 這就是多型性 1 增加了程式的靈活性 以不變應萬變,不論物件千變萬化,使用者都是同一種形式去呼叫,如func animal 2 增加了程式可擴充套件性 通過繼承animal類建立了乙個新的類,使用者無需改變自己...

Python多型和多型性

python多型和多型性 python 中的多型是指一類事務有多種形態。比如動物有多種形態,人,狗,貓,等等。import abc class animal metaclass abc.abcmeta 同一類事物 動物 abc.abstractmethod def talk self pass cl...

Python中的多型性

比如上課時,老師對全班同學說 大家把自己的名字寫在各自的作業本上 這時候,張三會在張三的本子上寫上 張三 的名字,李四會在李四的作業本上寫上 李四 的名字,王五會在王五的作業本上寫上 王五 的名字,而老師口中的 自己 此時在這裡代表了班上不同的人,而寫名字這件事,大家也都寫上了各自的名字。這就是多型...