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
原文地址:https://www.cnblogs.com/python-daxiong/p/11127905.html