多型是將不同的物件呼叫相同的方法,產生不同的執行結果,
多型可以增加代碼的靈活度,以繼承和重寫父類方法為前提,是呼叫方法的技巧,不會影響到類的內部設計,
我們都知道,Python 是弱型別語言,其最明顯的特征是在使用變數時,無需為其指定具體的資料型別,
示例:
在 Dog 類中封裝方法 game,普通狗只是簡單的玩耍,
定義 XiaoTianDog 繼承自 Dog,并且重寫 game 方法,哮天犬需要在天上玩耍,
定義 Person 類,并且封裝一個和狗玩的方法,在方法內部,直接讓狗物件呼叫 game 方法,

class Dog(object):
def __init__(self, name):
self.name = name
def game(self):
print("%s 蹦蹦跳跳的玩耍..." % self.name)
class XiaoTianDog(Dog):
def game(self):
print("%s 飛到天上去玩耍..." % self.name)
class Person(object):
def __init__(self, name):
self.name = name
def game_with_dog(self, dog):
print("%s 和 %s 快樂的玩耍..." % (self.name, dog.name))
dog.game()
# 1. 創建一個狗物件
# wangcai = Dog("旺財")
wangcai = XiaoTianDog("飛天旺財")
# 2. 創建一個小明物件
xiaoming = Person("小明")
# 3. 讓小明呼叫和狗玩的方法
xiaoming.game_with_dog(wangcai)
# 小明 和 飛天旺財 快樂的玩耍...
# 飛天旺財 飛到天上去玩耍...
game 方法是在 Dog 父類中定義的,Person 類中只需要讓狗物件呼叫 game 方法,而不關心具體是什么狗,
在程式執行時,傳入不同的狗物件實參,就會產生不同的執行效果,
類的多型特性,必須滿足以下 2 個前提條件:
- 繼承:多型一定是發生在子類和父類之間,
- 重寫:子類重寫了父類的方法,
多型更容易撰寫出通用的代碼,做出通用的程式,以適應需求的不斷變化!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/13984.html
標籤:Python
上一篇:Django的簡單介紹及虛擬環境的搭建、創建專案,資料庫(Windows版超級詳細)--Python web應用程式開發(Python實戰)
