接口类
首先要知道的就是,不管是接口类还是抽象类,都是一种设计模式,是面对对象开发规范
而这种设计模式是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())
文本数据的读取方法