В абстрактном классе обычно реализуется общая часть нескольких сущностей или другими словами - абстрактная сущность.
Абстрактный метод – это метод, который не имеет своей реализации в базовом классе, и он должен быть реализован в классе-наследнике.
Для того, чтобы создать абстрактный класс с абстрактными методами, надо импортировать вспомогательные метакласс ABCMeta и декоратор abstractmethod из модуля abc.
from abc import ABCMeta, abstractmethodclass AbstractClass(metaclass=ABCMeta): @abstractmethod def function(self): passЕсли мы отнаследуем новый класс от абстрактного класса, не переопределив абстрактные методы (в данном случае function), и попробуем создать экземпляр, то получим исключение:
class BadExample(AbstractClass): passchild = BadExample() # TypeError: Can't instantiate abstract class BadExample with abstract methods functionДля того, чтобы код заработал корректно, нам необходимо переопределить все абстрактные методы. То есть по сути еще раз просто написать функцию, но уже в новом классе.
class GoodExample(AbstractClass): def function(self): print('Everything is ok')anotherchild = GoodExample()