Definition
Abstract base classes complement duck-typing by
providing a way to define interfaces when other techniques like
hasattr()
would be clumsy or subtly wrong (for example with
magic methods). ABCs introduce virtual
subclasses, which are classes that don’t inherit from a class but are
still recognized by isinstance()
and issubclass()
; see the
abc
module documentation. Python comes with many built-in ABCs for
data structures (in the collections.abc
module), numbers (in the
numbers
module), streams (in the io
module), import finders
and loaders (in the importlib.abc
module). You can create your own
ABCs with the abc
module.