23 lines
520 B
Python
23 lines
520 B
Python
|
"""
|
||
|
Singleton decorator definition
|
||
|
"""
|
||
|
|
||
|
from functools import wraps
|
||
|
|
||
|
|
||
|
def Singleton(cls):
|
||
|
"""
|
||
|
Decorator implementing the singleton pattern:
|
||
|
it restricts the instantiation of a class to one "single" instance.
|
||
|
"""
|
||
|
instances = {}
|
||
|
|
||
|
# https://github.com/sphinx-doc/sphinx/issues/3783
|
||
|
@wraps(cls)
|
||
|
def getinstance():
|
||
|
"""Find an instance or save newly created one"""
|
||
|
if cls not in instances:
|
||
|
instances[cls] = cls()
|
||
|
return instances[cls]
|
||
|
return getinstance
|