def singleton(class_): instances = {} def getinstance(*args, **kwargs): if class_ not in instances: instances[class_] = class_(*args, **kwargs) return instances[class_] return getinstance @singleton class MyClass: pass s1 = MyClass() s2 = MyClass() print(id(s1) == id(s2))