Абстрактные классы в Python: руководство для начинающих

Абстрактный класс – это план для связанных классов. Он не может быть создан, но доступен только через наследование. Подкласс, наследующий абстрактный класс, необходим для реализации его абстрактных методов. В противном случае компилятор отметит ошибку.

Абстрактные методы – это методы без реализации. Абстрактный класс может иметь абстрактные методы или конкретные (обычные) методы.

Python не поддерживает абстрактные методы напрямую, но вы можете получить к ним доступ через модуль abc (абстрактный базовый класс).

Использование модуля abc в Python

Чтобы определить абстрактный класс в Python, вам необходимо импортировать модуль abc.

См. Пример ниже:

 from abc import ABC
class AbstractClassName(ABC):
pass

Обратите внимание на проход ключевого слова. Это ключевое слово используется для замены пустого кода. Если вы его не укажете, компиляция выдаст ошибку.

По теме: Будет ли Джулия претендовать на трон Питона?

Определения классов, определения методов, циклы и операторы if ожидают реализации кода. Таким образом, их отсутствие дает ошибку компиляции. Чтобы этого избежать, используйте pass для замены пустого кода.

Чтобы определить абстрактный метод в Python, используйте декоратор @abstractmethod :

 from abc import ABC, abstractmethod
class AbstractClassName(ABC):
@abstractmethod
def abstractMethod(self):
pass

Здесь было бы хорошо упомянуть, что – в отличие от Java – абстрактные методы в Python могут иметь реализацию. Доступ к этой реализации можно получить в методе переопределения с помощью метода super () .

 import abc
class AbstractClass(ABC):
def __init__(self, value):
self.value = value
super().__init__()
@abc.abstractmethod
def some_action(self):
print("This is the parent implementation.")
class MySubclass(AbstractClassExample):
def some_action(self):
super().some_action()
print("This is the subclass implementation. ")
x = MySubclass()
x.some_action()

Интересно отметить, что вы можете определить конструктор в абстрактном классе.

В строке 9 вы можете заметить, что @ abc.abstractmethod использовался в качестве декоратора абстрактного метода. Это еще один способ, отличный от предыдущей формы. Также обратите внимание, что строка 1 короче ( import abc ), чем предыдущая строка 1 import, которую вы использовали.

Все дело в выборе. Хотя второй способ многим может показаться короче.

Обработка исключений в Python

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

Эти события, которые нарушают нормальный ход выполнения программы, называются «исключениями», а управление ими – «обработкой исключений». Следующим в вашем списке чтения Python должна быть обработка исключений.