Python 面向对象5 多态
一、多态
多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作,简单的说就是一句话:允许将子类类型的指针赋值给父类类型的指针。
那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化:继承可以扩展已存在的代码模块(类):他们的目的都是为了--代码重用。而多态则是为了实现另一个目的--接口重用:多态的作用,就是为了类在继承和派生的时候,保证使用“家谱“中任一类的实例的某一属性时的正确调用。
Python不支持多态并且也用不到多态,多态的概念是应用于Jave和C#这一类强类型语言中。
二、通过Python模拟的多态
1 class Animal(object): 2 def __init__(self,name): 3 self.name = name 4 def talk(self): 5 raise NotImplementedError("Subclass must implement abstract method") 6 7 class Cat(Animal): 8 def talk(self): 9 return 'Meow' 10 11 class Dog(Animal): 12 def talk(self): 13 return 'Woof! Woof!' 14 15 animals = [Cat('Missy'),Dog('Lassie')] 16 17 for animal in animals: 18 print(animal.name + ':' + animal.talk())