# # 接口类和抽线类在python 里面是一样的。python里面是没有接口这个概念的 # # 接口类,抽象类:定义,制定一个规范 # # class Alipay: # def __init__(self, money): # self.money = money # def pay(self): # print("使用支付宝支付了%s" % self.money) # # # class Jd: # def __init__(self,money): # self.money = money # # def pay(self): # print("使用京东支付了%s" % self.money) # # # a1 = Alipay(200) # a1.pay() # j1 = Jd(100) # j1.pay() # # # # 让支付的方式一样 # # def pay(obj): # obj.pay() # # pay(a1) # 归一化接口设计。注意这种方式 # # # 制定规则,抽象类,接口类 from abc import ABCMeta,abstractclassmethod class Parment(metaclass=ABCMeta): # 抽象类,接口类 @abstractclassmethod def pay(self): pass #只是作为一个规范,所有的类继承这个类里面都有这个pay方法。并且让他强制执行,没有这个方法就报错 # 强制制定一个规范,凡是继承我的类中必须有pay方法,如果没有,实例化对象就会报错 # 意思就是一个简单的模板,必须按照这个模板来玩。不这样就直接报错 class Alipay(Parment): def __init__(self, money): self.money = money def pay(self): print("使用支付宝支付了%s" % self.money) class Jd(Parment): def __init__(self,money): self.money = money def pay(self): print("使用京东支付了%s" % self.money) class Wechatpay(Parment): def __init__(self, money): self.money = money def pay(self): print("使用微信支付了%s" % self.money) def pay(obj): obj.pay() a = Alipay(200) # a.pay() pay(a) w = Wechatpay(90) pay(w) # w.wexinpay()