1. 程式人生 > >Python 面向物件5 多型

Python 面向物件5 多型

一、多型

  多型性(polymorphisn)是允許你將父物件設定成為和一個或更多的他的子物件相等的技術,賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作,簡單的說就是一句話:允許將子類型別的指標賦值給父類型別的指標。

  那麼,多型的作用是什麼呢?我們知道,封裝可以隱藏實現細節,使得程式碼模組化:繼承可以擴充套件已存在的程式碼模組(類):他們的目的都是為了--程式碼重用。而多型則是為了實現另一個目的--介面重用:多型的作用,就是為了類在繼承和派生的時候,保證使用“家譜“中任一類的例項的某一屬性時的正確呼叫。

  Python不支援多型並且也用不到多型,多型的概念是應用於Jave和C#這一類強型別語言中。

二、通過Python模擬的多型

class Animal(object):
def __init__(self,name):
self.name = name
def talk(self):
raise NotImplementedError("Subclass must implement abstract method")

class Cat(Animal):
def talk(self):
return 'Meow'

class Dog(Animal):
def talk(self):
return 'Woof! Woof!'

animals = [Cat('Missy'),Dog('Lassie')]

for animal in animals:
print(animal.name + ':' + animal.talk())