默认情况下,Python解析器不强制检查对抽象类的继承,即抽象类的子类可能没有实现其中的抽象方法,但是Python并不会报错。
为了避免这种情况,从Python 3.4/2.6开始,Python标准库中提供了abc模块(Abstract Base Classes),为定义Python的抽象基类提供了公共基础。
事实上,Python标准库中的numbers模块和collections模块都是abc模块的典型应用。
1. abc模块的组成
from abc import ABC, abstractmethod
class MyAbstractClass(ABC):
@abstractmethod
def myabstractmethod(self):
raise NotImplementedError
class MyConcreteA(MyAbstractClass):
pass
class MyConcreteB(MyAbstractClass):
def myabstractmethod(self):
return
参考链接:
https://docs.python.org/3/library/abc.html
https://github.com/python/cpython/tree/3.6/Lib/abc.py