ABC — abstract classes for defining interfaces.
1from abc import ABC, abstractmethod23class Shape(ABC):4 @abstractmethod5 def area(self) -> float:6 pass78 @abstractmethod9 def perimeter(self) -> float:10 pass1112 def describe(self) -> str:13 return f"Area: {self.area():.2f}"1415class Circle(Shape):16 def __init__(self, radius):17 self.radius = radius1819 def area(self) -> float:20 return 3.14 * self.radius ** 22122 def perimeter(self) -> float:23 return 2 * 3.14 * self.radius2425# shape = Shape() # Error! Cannot instantiate26circle = Circle(5)27print(circle.describe()) # "Area: 78.50"2829# Type checking30print(isinstance(circle, Shape)) # True31print(issubclass(Circle, Shape)) # True
When to use: