day15-接口类
# 一、接口类的作用是规范它的子类,跟后面学习的接口没关系。 from abc import abstractmethod,ABCMeta class Pay(metaclass=ABCMeta): #metaclass是元类。 @abstractmethod def pay(self):pass #pass意思是没代码。 #接口类:规范后面的子类,当子类没有pay方法时,抛出提示: # Can't instantiate abstract class Apple with abstract methods pay 无法使用抽象方法pay来实例化抽象类apple,意思就是没有pay方法。 class Wechat(Pay): def pay(self,money): print('微信支付了%s元'%money) class Ali(Pay): def pay(self,money): print('支付宝支付了%s元'%money) class Apple(Pay): def pppppppppppppppppppp(self,money): print('苹果支付了%s元'%money) def P(a,b): #统一接口,方便用户。 a.pay(b) #多态,同一类事物有多种形态。 w = Wechat() a = Ali() ap = Apple() # w.pay(100) # a.pay(200) # ap.pay(300) P(w,100) P(a,200) P(ap,200) # 二、接口类的多继承:是面向对象的思想,符合接口类的接口隔离原则: # 使用多个专门的接口(走路、游泳、飞分为三个专门的类),而不是使用单一的总接口(一个类有走路、游泳、飞三个方法),即客户端只需要有用的接口,不需要多余的。 # 老虎tiger 会走路、游泳 # 老鹰eagle 会走路、飞 # 天鹅swan 会走路、游泳、飞 from abc import abstractmethod,ABCMeta class Walk(metaclass=ABCMeta): @abstractmethod def walk(self):pass class Swim(metaclass=ABCMeta): @abstractmethod def swim(self):pass class Fly(metaclass=ABCMeta): @abstractmethod def fly(self):pass class Tiger(Walk,Swim): def walk(self):pass def swim(self):pass class Eagle(Walk,Swim): def walk(self):pass def fly(self):pass class Swan(Walk,Swim): def walk(self):pass def swim(self): pass def fly(self):pass