Python物件導向程式設計中的多型性表示的是同一種操作可以在不同的物件上有不同的表現。多型性指的是可以無視物件的具體型別,而直接呼叫某個方法,這個方法會根據物件的實際型別而進行不同的操作。這是透過繼承和重寫方法實現的。
在Python中,任何類都有一個公共的祖先:object類。Python中的所有物件最終都會繼承自這個基礎類。這個特性允許我們在建立方法時,將引數型別設定為最基礎的object。這樣我們就可以接收任何型別的引數,並在方法中檢查引數的具體型別,以便執行不同的操作。
下面透過一個簡單的例子來進行說明:
python
class Animal(object):
def say(self):
raise NotImplementedError("Subclass must implement abstract method")
class Dog(Animal):
def say(self):
return "Woof! Woof!"
class Cat(Animal):
def say(self):
return "Meow!"
animals = [Dog(), Cat()]
for animal in animals:
print(animal.say())
在這個例子中,我們定義了一個基礎類Animal,在這個基礎類中定義了一個say方法,但這個方法並沒有實現任何功能,而是丟擲一個NotImplementedError異常。我們期望其子類去重寫這個方法。
然後我們定義了兩個Animal的子類:Dog和Cat,並各自重新定義了say方法,返回了各自的叫聲。
當我們建立了Dog和Cat物件並放入列表,我們可以遍歷這個列表,並呼叫裡面每個動物的say方法,它們各自會執行各自的操作,這就體現了多型性。
來源:https://www.jdmm.com.cn/saishibaodao/21236.html
轉發:https://www.jdmm.com.cn/saishibaodao/21235.html