# 抽象类和接口类 #**
#不崇尚接口类
#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
接口——支付宝例子

相关文章: