Абстрактный класс — это класс, который нельзя инстанцировать напрямую. Он служит шаблоном для подклассов, требуя реализации определённых методов. В Python абстрактные классы создаются с помощью встроенного модуля abc.
Наследуй от ABC и помечай методы декоратором @abstractmethod:
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
ABC — удобный базовый класс из модуля abc@abstractmethod помечает area как метод, который обязательно должен быть переопределёнShape напрямую вызовет TypeErrorПодкласс должен реализовать все абстрактные методы, иначе он тоже становится абстрактным и не может быть инстанцирован:
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius ** 2
@abstractmethodShape, не зная конкретный типАбстрактный класс, наследующий ABC, можно инстанцировать напрямую, если он не содержит абстрактных методов, хотя это не считается хорошей практикой.
Новый — ещё не проверен сообществом
Вы