Source code for sphinx_uml.singleton
[docs]
class Singleton(type):
"""
The :py:class:`Singleton` allows to define singleton classes, i.e.
classes that can be instantiated at most once.
>>> class MyClass(metaclass=Singleton): pass
>>> x = MyClass()
>>> y = MyClass()
>>> x is y
True
Based on this `thread
<https://stackoverflow.com/questions/6760685/creating-a-singleton-in-python>`__.
"""
s_instances = dict()
def __call__(cls, *args, **kwargs) -> type:
if cls not in cls.s_instances:
cls.s_instances[cls] = (
super(Singleton, cls).__call__(*args, **kwargs)
)
return cls.s_instances[cls]