设为首页 加入收藏

TOP

接口类和抽象类(二)
2019-06-12 00:06:07 】 浏览:71
Tags:接口 类和 抽象
,所以最后将会报’NotImplementedError‘的错误
def fuqian(self,money): # 这里不是使用pay函数 print('已经使用苹果支付了%s元' % money) def pay(pay_obj,money): # 统一支付入口,不管使用哪种方式,主要就是支付就可以了 pay_obj.pay(money) wechat = Wechatpay() # 实例化 ali = Alipay() # 实例化 app = Aapplepay() # 实例化 # 使用了开头的规范后,就不需要在进行调用方法pay才可以报错了了,直接进行实例化就可以, # 这样方便写代码的人很快就可以找出错误所在 # pay(wechat,100) # 通过微信支付100 # pay(ali,200) # 通过支付宝支付200 # pay(app,300) # 这里调用pay函数,但是前面Applepay里面使用的不是pay函数而是fuqian,所以这里结果将会报错

运行结果:

Traceback (most recent call last):
  File "<encoding error>", line 32, in <module>
TypeError: Can't instantiate abstract class Aapplepay with abstract methods pay

这样就可以引出用代码实现接口类的大致结构,类似的结构如下所示:

from abc import abstractmethod,ABCMeta
class Payment(metaclass=ABCMeta):  # 默认的元类type
    @abstractmethod
    def pay(self,money):  # 规范子类必须含有pay方法
        pass
class A(Payment):
    def pay(self,money):pass

class B(Payment):
    def pay(self,money):pass

class C(Payment):
    def pay(self,money):pass

其实接口类和抽象类都是起到一个规范子类,约束子类的一个作用,不同的地方是:

接口类:支持多继承,接口类中的所有方法都必须不能实现,这样才能起到规范的作用---Java中

抽象类:不支持多继承,抽象类中的方法可以有一些代码的实现---Java中

 

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇序列化,pickle,shelve,json,conf.. 下一篇python学习-8 用户有三次机会登陆

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目