Абстрактные классы и методы
В абстрактном классе обычно реализуется общая часть нескольких сущностей или другими словами – абстрактная сущность.
Абстрактный метод – это метод, который не имеет своей реализации в базовом классе, и он должен быть реализован в классе-наследнике.
Для того, чтобы создать абстрактный класс с абстрактными методами, надо импортировать вспомогательные метакласс
Если мы отнаследуем новый класс от абстрактного класса, не переопределив абстрактные методы, в данном случае
Для того, чтобы код заработал корректно, нам необходимо переопределить все абстрактные методы. То есть по сути еще раз просто написать метод, но уже в новом классе.
UPD. В коде опечатка, в классе
#классы #метаклассы #abc
В абстрактном классе обычно реализуется общая часть нескольких сущностей или другими словами – абстрактная сущность.
Абстрактный метод – это метод, который не имеет своей реализации в базовом классе, и он должен быть реализован в классе-наследнике.
Для того, чтобы создать абстрактный класс с абстрактными методами, надо импортировать вспомогательные метакласс
ABCMeta
и декоратор abstractmethod
из модуля abc
.Если мы отнаследуем новый класс от абстрактного класса, не переопределив абстрактные методы, в данном случае
method
, и попробуем создать экземпляр, то получим исключение TypeError
.Для того, чтобы код заработал корректно, нам необходимо переопределить все абстрактные методы. То есть по сути еще раз просто написать метод, но уже в новом классе.
UPD. В коде опечатка, в классе
GoodExample
метод должен называться method
, а не function
.#классы #метаклассы #abc
👍1
Абстрактные классы и методы
В абстрактном классе обычно реализуется общая часть нескольких сущностей или другими словами – абстрактная сущность.
Абстрактный метод – это метод, который не имеет своей реализации в базовом классе, и он должен быть реализован в классе-наследнике.
Для того, чтобы создать абстрактный класс с абстрактными методами, надо импортировать вспомогательные метакласс
Если мы отнаследуем новый класс от абстрактного класса, не переопределив абстрактные методы, в данном случае
Для того, чтобы код заработал корректно, нам необходимо переопределить все абстрактные методы. То есть по сути еще раз просто написать метод, но уже в новом классе.
UPD. В коде опечатка, в классе
#классы #метаклассы #abc
В абстрактном классе обычно реализуется общая часть нескольких сущностей или другими словами – абстрактная сущность.
Абстрактный метод – это метод, который не имеет своей реализации в базовом классе, и он должен быть реализован в классе-наследнике.
Для того, чтобы создать абстрактный класс с абстрактными методами, надо импортировать вспомогательные метакласс
ABCMeta
и декоратор abstractmethod
из модуля abc
.Если мы отнаследуем новый класс от абстрактного класса, не переопределив абстрактные методы, в данном случае
method
, и попробуем создать экземпляр, то получим исключение TypeError
.Для того, чтобы код заработал корректно, нам необходимо переопределить все абстрактные методы. То есть по сути еще раз просто написать метод, но уже в новом классе.
UPD. В коде опечатка, в классе
GoodExample
метод должен называться method
, а не function
.#классы #метаклассы #abc
👍35👎5