В Python 2.6 и 3.1 стандартная библиотека Python предоставляет abc.ABCMeta
, мета-класс для абстрактных базовых классов («Азбука»). Классы, которые используют мета-класс, могут использовать @abstractmethod и @abstractproperty для определения абстрактных методов и свойств. Мета-класс гарантирует, что производные классы переопределяют абстрактные методы и свойства.
Кроме того, классы, которые реализуют ABC без фактического наследования от него, могут регистрироваться как реализующие интерфейс, так что issubclass
и isinstance
будут работать.
Например, модуль collection определяет Sequence ABC. Он также вызывает Sequence.register(tuple)
для регистрации встроенного типа tuple
как Sequence
, хотя tuple
на самом деле не наследуется от Sequence
.