- 多态:指的是一类事物有多种形态,比如,动物有多种形态:人,狗,猪
- 多态性:指在不考虑实例类型的情况下使用实例,多态性分为静态多态性和动态多态性
- 静态多态性:如任何类型都可以用运算符+进行运算
- 动态多态性:通过定义一个统一的接口来使用
- 好处
- 增加程序的灵活性:以不变应万变,不论对象千变万化,使用者都是用同一种形式去调用,如
func(animal)
- 增加程序的可扩展性
- 通过继承animal类创建一个新的类,使用者无需更改自己的代码,还是用func(animal)去调用
- 增加程序的灵活性:以不变应万变,不论对象千变万化,使用者都是用同一种形式去调用,如
1 #多态:同一类事物的多种形态 2 import abc 3 class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 4 @abc.abstractmethod 5 def talk(self): 6 pass 7 8 class People(Animal): #动物的形态之一:人 9 def talk(self): 10 print('say hello') 11 12 class Dog(Animal): #动物的形态之二:狗 13 def talk(self): 14 print('say wangwang') 15 16 class Pig(Animal): #动物的形态之三:猪 17 def talk(self): 18 print('say aoao') 19 20 class Cat(Animal): 21 def talk(self): 22 print('say miamiao') 23 24 #多态性:指的是可以在不考虑对象的类型的情况下而直接使用对象 25 peo1=People() 26 dog1=Dog() 27 pig1=Pig() 28 cat1=Cat() 29 30 # peo1.talk() 31 # dog1.talk() 32 # pig1.talk() 33 34 def func(animal): 35 animal.talk() 36 37 38 func(peo1)#say hello 39 func(pig1)#say aoao 40 func(dog1)#say wangwang 41 func(cat1)#say miamiao
- 鸭子类型
- python崇尚鸭子类型,即如果看起来像,叫声像而且走起路来像鸭子,那么它就是鸭子
- python程序员通常根据这种行为来编写程序。例如,如果想编写现有对象的自定义版本,可以继承该对象
- 也可以创建一个外观和行为像,但与它无任何关系的全新对象,后者通常用于保存程序组件的松耦合度
-
1 #序列类型:列表list,元祖tuple,字符串str 2 3 l=list([1,2,3]) 4 t=tuple(('a','b')) 5 s=str('hello') 6 7 # print(l.__len__()) 8 # print(t.__len__()) 9 # print(s.__len__() 10 11 # def len(obj): 12 # return obj.__len__() 13 14 print(len(l)) 15 print(len(t)) 16 print(len(s))