# 抽象类和接口类 #**
#不崇尚接口类
#python本身支持多继承,没有接口专用的语法。但是我知道接口的概念
# 接口类:
# 是规范子类的一个模板,只要接口类中定义的,就应该在子类中实现
# 接口类不能被实例化,它只能被继承
# 支持多继承
from abc import ABCMeta,abstractmethod class Payment(metaclass=ABCMeta): #模板,接口类 @abstractmethod #装饰接口类中方法的,加上这个装饰器,自动检测子类中的方法名 def pay(self,money): #模板样式 pass # @abstractmethod # def get(self):pass class Apple_Pay(Payment): def pay(self,money): print('您使用苹果支付支付了%s元'%money) class Ali_Pay(Payment): def pay(self, money): print('您使用支付宝支付了%s元' % money) class WeChat_Pay(Payment):# 调用接口 def fuqian(self,money): #这里没有严格按照接口中的形式去写,后续执行它的时候就报错了 print('您使用微信支付了%s元' % money) def pay(obj,money): return obj.pay(money) # apple = Apple_Pay() # # ali = Ali_Pay() # # apple.pay(100) # pay(apple,100) #apple.pay(100) wechat = WeChat_Pay() pay(wechat,200) #执行的时候就会报此错误, 因为def fuqian(self,money): 这里没有严格按照接口的样式来写 #改成 def pay(self,money)这种形式就可以了 # TypeError: Can't instantiate abstract class WeChat_Pay with abstract methods pay