The abc module
The core method of creating ABCs is defined in the abc
module. This module includes the ABCMeta
class that provides several features.
First, the ABCMeta
class assures that abstract classes can't be instantiated. A subclass that provides all of the required definitions, however, can be instantiated. The metaclass will invoke the abstract class's special method, __subclasshook__()
, as a part of processing __new__()
. If that method returns NotImplemented
, then an exception will be raised to show that the class didn't define all the required methods.
Second, it provides definitions for __instancecheck__()
and __subclasscheck__()
. These special methods implement the isinstance()
and issubclass()
built-in functions. They provide the checks to confirm that an object (or a class) belongs to the proper ABC. This includes a cache of subclasses to speed up the testing.
The abc
module also includes a number of decorators for creating abstract method functions that must be provided by a concrete...