python 接口类和抽象类

接口类

首先要知道的就是,不管是接口类还是抽象类,都是一种设计模式,是面对对象开发规范

而这种设计模式是java提出来的,java还有很多类似的东西被其它编程语言沿用

接口类是java为了实现多继承,设计的一个概念

python原生并没有接口类这一概念,但是为了实现接口隔离原则,而划分出来的

接口隔离原则:

使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些不需要的接口

因为python天生能实现多继承,所以并没有接口类

应该算符合原则,强行区分出来这么一类吧

from abc import abstractmethod,ABCMeta   #这里是为了实现接口类调用的模块
class Payment(metaclass=ABCMeta):   #在这里声明metaclass=ABCMeta
    @abstractmethod                  #然后这里一个语法糖调用abstractmethod,就声明这个类是接口类
    def pay(self,money):pass

一但声明一个接口类,接口类中的所有方法都必须不能实现

抽象类

抽象类也是面对对象开发规范

一般情况下单继承能实现的功能都是一样的

多继承的情况忧郁功能比较复杂,所以不容易抽象出相同的功能能的具体实现写在父类中

python中支持抽象类:一般情况下 单继承

          且可以实现python代码

抽象类和接口类都不能实例化

import abc #利用abc模块实现抽象类
class All_file(metaclass=abc.ABCMeta):
    all_type='file'
    @abc.abstractmethod #定义抽象方法,无需实现功能
    def read(self):
        '子类必须定义读功能'
        with open('filaname') as f:
            pass
class Txt(All_file): #子类继承抽象类,但是必须定义read和write方法
    def read(self):
        print('文本数据的读取方法')
wenbenwenjian=Txt()
print(wenbenwenjian.read())

文本数据的读取方法

posted @ 2018-01-19 20:11  GrandDarkness  阅读(3758)  评论(0编辑  收藏  举报