python學習之多态
多态性(polymorphisn)是允許你将父對象設定成為和一個或更多的他的子對象相等的技術,指派之後,父對象就可以根據目前指派給它的子對象的特性以不同的方式運作。簡單的說,就是一句話:允許将子類類型的指針指派給父類類型的指針。
那麼,多态的作用是什麼呢?我們知道,封裝可以隐藏實作細節,使得代碼子產品化;繼承可以擴充已存在的代碼子產品(類);它們的目的都是為了——代碼重用。而多态則是為了實作另一個目的——接口重用!多态的作用,就是為了類在繼承和派生的時候,保證使用“家譜”中任一類的執行個體的某一屬性時的正确調用。
Pyhon 很多文法都是支援多态的,比如 len(),sorted(), 你給len傳字元串就傳回字元串的長度,傳清單就傳回清單長度。
執行個體如下:
#coding: utf8
class Animal(object):
def __init__(self, name): # Constructor of the class
self.name = name
def talk(self): # Abstract method, defined by convention only
raise NotImplementedError("Subclass must implement abstract method")
class Cat(Animal):
def talk(self):
print('%s: 喵喵喵!' % self.name)
class Dog(Animal):
print('%s: 汪!汪!汪!' % self.name)
def func(obj): # 一個接口,多種形态
obj.talk()
c1 = Cat('小晴')
d1 = Dog('小磊')
func(c1)
func(d1)
腳本執行結果如下:
小晴: 喵喵喵!
小磊: 汪!汪!汪
版權聲明:原創作品,如需轉載,請注明出處。否則将追究法律責任
本文轉自 鵬愛 51CTO部落格,原文連結:http://blog.51cto.com/pengai/1933032