instances = {}

def singleton(aClass):                          # W momencie dekoracji @
    def onCall(*args, **kwargs):                # W momencie tworzenia instancji
        if aClass not in instances:             # Jeden wpis słownika na klasę
            instances[aClass] = aClass(*args, **kwargs)
        return instances[aClass]
    return onCall

