天天看點

python學習之多态

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