Python 多态
2018-06-19 08:09 钱先生 阅读(235) 评论(0) 编辑 收藏 举报多态(polymorphism)
- 含义: 允许将你对象设置成为和一个或更多其它子对象相等的技术, 赋值之后, 父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作. 即: 允许将子类类型的指针赋值给父类类型的指针.
- 作用: 接口重用
- 即为了类在继承和派生的时候,保证使用"家谱中任一类的实例的某一属性时的正确调用."
- 封装可以隐藏实现细节, 使得代码模块化; 继承可以扩展已存在的代码模块(类);它们的目的都是为了--代码重用.
- Python不直接支持多态, 但是可以间接实现.
#!/usr/bin/python # -*- coding: utf-8 -*- class Animal: 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") # 实现一调用这个方法就抛错误. 类似java中的throw class Cat(Animal): def talk(self): return "Meow!" class Dog(Animal): def talk(self): return "Woof! Woof!" # 实现方法1 d = Dog('dd') c = Cat('cc') def animal_talk(obj): # 如果直接Animal.talk(d)是没法调用talk的, 因为d只是传给了self, 要想执行talk()方法, 还需要一个obj. print(obj.talk()) animal_talk(d) animal_talk(c) # 实现方法2 # animals = [Cat('Missy'), Dog('Lassie')] # # for animal in animals: # print(animal.name+':'+animal.talk())