| """The singleton metaclass for ensuring only one instance of a class.""" |
| import abc |
|
|
|
|
| class Singleton(abc.ABCMeta, type): |
| """ |
| Singleton metaclass for ensuring only one instance of a class. |
| """ |
|
|
| _instances = {} |
|
|
| def __call__(cls, *args, **kwargs): |
| """Call method for the singleton metaclass.""" |
| if cls not in cls._instances: |
| cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs) |
| return cls._instances[cls] |
|
|
|
|
| class AbstractSingleton(abc.ABC, metaclass=Singleton): |
| """ |
| Abstract singleton class for ensuring only one instance of a class. |
| """ |
|
|
| pass |
|
|