Python 面向物件5 多型
阿新 • • 發佈:2018-11-08
一、多型
多型性(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())