Создать абстрактный класс в Python
-
Python 3.4+ - Создайте абстрактный класс в Python путем наследования от модуля
ABC
-
Python 3.0+ - Создайте абстрактный класс в Python путем наследования от модуля
ABCMeta
- Метод проверки, является ли класс абстрактным или нет в Python

Абстрактный класс является ограниченным классом, потому что он не может быть создан - вы не можете использовать его для создания объектов. Его можно унаследовать только от другого класса.
Абстрактный класс нацелен на определение общей функции / поведения, которые могут унаследовать несколько подклассов без необходимости реализации всего абстрактного класса.
В Python мы можем создавать абстрактный класс на основе разных способов в зависимости от версии Python.
Python 3.4+ - Создайте абстрактный класс в Python путем наследования от модуля ABC
В Python 3.4 для создания абстрактного класса.
- Импортируйте модуль
ABC
(абстрактные базовые классы).
from abc import ABC, abstractmethod
- Объявите абстрактный метод с помощью декоратора
@abstractmethod
.
from abc import ABC, abstractmethod
class ExampleAbstractClass(ABC):
@abstractmethod
def abstractmethod(self):
pass
Ниже приведен пример, в котором абстрактный класс Vehicle
имеет два подкласса, а именно Car
и Bike
. У классов Car
и Bike
есть своя уникальная реализация.
from abc import ABC, abstractmethod
class Vehicle(ABC):
@abstractmethod
def numberofwheels(self):
pass
class Car(Vehicle):
def numberofwheels(self):
print("A Car has 4 wheels")
class Bike(Vehicle):
def numberofwheels(self):
print("A Bike has 2 wheels")
C = Car()
C.numberofwheels()
B = Bike()
B.numberofwheels()
Выход:
A Car has 4 wheels
A Bike has 2 wheels
Python 3.0+ - Создайте абстрактный класс в Python путем наследования от модуля ABCMeta
В Python 3.0+ для создания абстрактного класса.
- Импортируйте модуль
ABCMeta
(абстрактные базовые классы).
from abc import ABCMeta, abstractmethod
- Объявите абстрактный метод с помощью декоратора
@abstractmethod
и укажитеmetaclass=ABCMeta
.
from abc import ABCMeta, abstractmethod
class Example2AbstractClass(metaclass=ABCMeta):
@abstractmethod
def abstractmethod2(self):
pass
Ниже приведен пример.
from abc import ABCMeta, abstractmethod
class Vehicle(metaclass=ABCMeta):
@abstractmethod
def numberofwheels(self):
pass
class Car(Vehicle):
def numberofwheels(self):
print("A Car has 4 wheels")
class Bike(Vehicle):
def numberofwheels(self):
print("A Bike has 2 wheels")
C = Car()
C.numberofwheels()
B = Bike()
B.numberofwheels()
Выход:
A Car has 4 wheels
A Bike has 2 wheels
Метод проверки, является ли класс абстрактным или нет в Python
Чтобы проверить, действительно ли созданный класс является абстрактным классом, мы должны создать экземпляр класса. Абстрактный класс не разрешит создание экземпляров и выдаст ошибку.
Например, если мы создадим реферат, как показано ниже.
x = ExampleAbstractClass()
Затем отображается ошибка.
Can't instantiate abstract class ExampleAbstractClass with abstract methods abstractmethod
Сопутствующая статья - Python Class
- Статические переменные класса в Python
- Статический метод Python
- Метаклассы в Python
- Частные методы в Python
- Множественное наследование в Python