python抽象基类

来源

抽象基类 = 接口 ——python中没有接口概念

抽象基类定义:
必须包含一个抽象函数(纯虚函数),它是一个不完整的类,它有已经被实现的方法,也有需要子类重写的方法。

抽象基本类(接口)的几大特点:

  • python中抽象基类必须继承自ABC(Abstract Base Class)类;
  • 可以包含类方法、静态方法、普通方法,但是必须至少有一个抽象方法;
  • 抽象基类不能实例化;
  • 子类需要实现基类中定义的所有抽象方法;

抽象基类具有以下优点:

  • 处理继承问题方面更加规范、系统
  • 明确调用之间的相互关系
  • 使得继承层次更加清晰
  • 限定子类实现的方法

类和接口/抽象类区别:

  • 类实现了对象的属性和方法,而接口指定了使用该接口需要实现哪些方法;
  • 类可以实例化,而接口不可以被实例化;
  • 类中的方法可以是实现,接口中的方法都是抽象方法;
  • 抽象方法 :抽象方法的概念是父类中只负责声明该方法,但不具体实现这个方法,实现部分由继承该类的子类负责实现。

抽象基类python中的实现
1.抽象基类:通过继承abc模块中的ABC类来实现抽象基类。

2.抽象方法:
通过装饰器@abstractmethod来定义抽象方法,也就是需要子类实现的方法。

装饰器@abstractmethod除了可以实现抽象方法外,还可以装饰类方法(@classmethod)、静态方法(@staticmethod)、属性(@property)。