Абстрактные классы и методы



В абстрактном классе обычно реализуется общая часть нескольких сущностей или другими словами – абстрактная сущность.



Абстрактный метод – это метод, который не имеет своей реализации в базовом классе, и он должен быть реализован в классе-наследнике. 



Для того, чтобы создать абстрактный класс с абстрактными методами, надо импортировать вспомогательные метакласс ABCMeta и декоратор abstractmethod из модуля abc.



Если мы отнаследуем новый класс от абстрактного класса, не переопределив абстрактные методы, в данном случае method, и попробуем создать экземпляр, то получим исключение TypeError.



Для того, чтобы код заработал корректно, нам необходимо переопределить все абстрактные методы. То есть по сути еще раз просто написать метод, но уже в новом классе.



UPD. В коде опечатка, в классе GoodExample метод должен называться method, а не function.



#классы #метаклассы #abc