abc
(Abstract Base Classes).
Для этого класс наследуется от abc.ABC
и методы, которые должны быть реализованы в подклассах, декорируются @abc.abstractmethod
.
В Python абстрактные классы создаются с использованием модуля abc
(Abstract Base Classes). Для создания абстрактного класса необходимо:
abc
: import abc
abc.ABC
(или использовать метакласс abc.ABCMeta
).@abc.abstractmethod
для обозначения абстрактных методов.Пример:
import abc
class Shape(abc.ABC):
@abc.abstractmethod
def area(self):
pass
@abc.abstractmethod
def perimeter(self):
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius * self.radius
def perimeter(self):
return 2 * 3.14 * self.radius
# a = Shape() # TypeError: Can't instantiate abstract class Shape with abstract methods area, perimeter
c = Circle(5)
print(c.area())
print(c.perimeter())
Что означает абстрактный класс?
TypeError
.В Python, использование абстрактных классов помогает обеспечить строгий контракт между классами и их наследниками, что делает код более надежным и поддерживаемым. Хотя утиная типизация (duck typing) является распространенной парадигмой в Python, использование абстрактных классов позволяет добавить больше контроля и явной структуры в иерархии классов.