Abstract classes (or Interfaces) are an essential part of an Object-Oriented design. While Python is not a purely OOP language, it offers very robust solutions in terms of abstract and meta classes.
read more “Abstract Classes and Meta Classes in Python”