标签:pen python UNC 调用 OAO obj list 多态 def
1 import abc 2 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‘)
1 import abc 2 class File(metaclass=abc.ABCMeta): #同一类事物:文件 3 @abc.abstractmethod 4 def click(self): 5 pass 6 7 class Text(File): #文件的形态之一:文本文件 8 def click(self): 9 print(‘open file‘) 10 11 class ExeFile(File): #文件的形态之二:可执行文件 12 def click(self): 13 print(‘execute file‘)
1 peo=People() 2 dog=Dog() 3 pig=Pig() 4 5 #peo、dog、pig都是动物,只要是动物肯定有talk方法 6 #于是我们可以不用考虑它们三者的具体是什么类型,而直接使用 7 peo.talk() 8 dog.talk() 9 pig.talk() 10 11 #更进一步,我们可以定义一个统一的接口来使用 12 def func(obj): 13 obj.talk()
>>> class Cat(Animal): #属于动物的另外一种形态:猫... def talk(self): ... print(‘say miao‘) ... >>> def func(animal): #对于使用者来说,自己的代码根本无需改动 ... animal.talk() ... >>> cat1=Cat() #实例出一只猫 >>> func(cat1) #甚至连调用方式也无需改变,就能调用猫的talk功能 say miao ‘‘‘ 这样我们新增了一个形态Cat,由Cat类产生的实例cat1,使用者可以在完全不需要修改自己代码的情况下。使用和人、狗、猪一样的方式调用cat1的talk方法,即func(cat1) ‘‘‘
1 #二者都像鸭子,二者看起来都像文件,因而就可以当文件一样去用 2 class TxtFile: 3 def read(self): 4 pass 5 6 def write(self): 7 pass 8 9 class DiskFile: 10 def read(self): 11 pass 12 def write(self): 13 pass
1 #str,list,tuple都是序列类型 2 s=str(‘hello‘) 3 l=list([1,2,3]) 4 t=tuple((4,5,6)) 5 6 #我们可以在不考虑三者类型的前提下使用s,l,t 7 s.__len__() 8 l.__len__() 9 t.__len__() 10 11 len(s) 12 len(l) 13 len(t)
标签:pen python UNC 调用 OAO obj list 多态 def
原文地址:https://www.cnblogs.com/oceanicstar/p/8848308.html