Python 多型
“多型”這個詞的意思是“多種形式”,在程式設計中,它指的是具有相同名稱的方法/函式/運算子,可以對許多物件或類執行。
函式多型
一個可以用於不同物件的 Python 函式的例子是 len()
函式。
字串
對於字串,len()
返回字元數
元組
對於元組,len()
返回元組中的項數
字典
對於字典,len()
返回字典中鍵/值對的數量
類多型
多型經常用於類方法中,我們可以讓多個類擁有相同名稱的方法。
例如,假設我們有三個類:Car
、Boat
和 Plane
,它們都具有一個名為 move()
的方法。
示例
具有相同方法的不同類
class Car
def __init__(self, brand, model)
self.brand = brand
self.model = model
def move(self)
print("Drive!")
class Boat
def __init__(self, brand, model)
self.brand = brand
self.model = model
def move(self)
print("Sail!")
class Plane
def __init__(self, brand, model)
self.brand = brand
self.model = model
def move(self)
print("Fly!")
car1 = Car("Ford", "Mustang") #建立 Car 類
boat1 = Boat("Ibiza", "Touring 20") #建立 Boat 類
plane1 = Plane("Boeing", "747") #建立 Plane 類
for x in (car1, boat1, plane1)
x.move()
自己動手試一試 »
看看最後的 for 迴圈。由於多型,我們可以對所有三個類執行相同的方法。
繼承類多型
擁有同名子類的類呢?我們可以在那裡使用多型嗎?
是的。如果我們使用上面的例子,建立一個名為 Vehicle
的父類,並將 Car
、Boat
、Plane
類設為 Vehicle
的子類,子類將繼承 Vehicle
的方法,但可以重寫它們。
示例
建立一個名為 Vehicle
的類,並將 Car
、Boat
、Plane
類設為 Vehicle
的子類。
class Vehicle
def __init__(self, brand, model)
self.brand = brand
self.model = model
def move(self)
print("Move!")
class Car(Vehicle)
pass
class Boat(Vehicle)
def move(self)
print("Sail!")
class Plane(Vehicle)
def move(self)
print("Fly!")
car1 = Car("Ford", "Mustang") #建立 Car 物件
boat1 = Boat("Ibiza", "Touring 20") #建立 Boat 物件
plane1 = Plane("Boeing", "747") #建立 Plane 物件
for x in (car1, boat1, plane1)
print(x.brand)
print(x.model)
x.move()
自己動手試一試 »
子類繼承了父類的屬性和方法。
在上面的例子中,您可以看到 Car
類是空的,但它從 Vehicle
繼承了 brand
、model
和 move()
。
Boat
和 Plane
類也從 Vehicle
繼承了 brand
、model
和 move()
,但它們都重寫了 move()
方法。
由於多型,我們可以對所有類執行相同的方法。