# -*- coding:utf-8 -*- from abc import abstractmethod,ABCMeta class Payment(metaclass=ABCMeta): # 元类 默认的元类 type #定义父类(接口类) @abstractmethod #定义抽象方法,无需实现功能 def pay(self,money):pass #没有实现这个方法 class Wechat(Payment): def pay(self,money): print('已经用微信支付了%s元'%money) class Alipay(Payment): def pay(self,money): print('已经用支付宝支付了%s元' % money) class Applepay(Payment): def pay(self,money): #没有使用规范的pay、就会报错 print('已经用applepay支付了%s元' % money) def pay(pay_obj,money): #统一支付入口(接口类)************** pay_obj.pay(money) wechat = Wechat() ali = Alipay() app = Applepay() #只定义(只要没使用pay方法就会报错) # wechat.pay(100) #不使用接口类,传统调用方法 # ali.pay(200) #不使用接口类,传统调用方法 pay(wechat,200) #统一支付入口调用支付方法