Skip to content

omicron.core.lang

singleton(cls)

Make a class a Singleton class

Examples:

>>> @singleton
... class Foo:
...     # this is a singleton class
...     pass
Source code in omicron/core/lang.py
def singleton(cls):
    """Make a class a Singleton class

    Examples:
        >>> @singleton
        ... class Foo:
        ...     # this is a singleton class
        ...     pass

    """
    instances = {}

    @functools.wraps(cls)
    def get_instance(*args, **kwargs):
        if cls not in instances:
            instances[cls] = cls(*args, **kwargs)
        return instances[cls]

    return get_instance