try:
    return self._instance
except AttributeError:
    self._instance = self._decorated()
return self._instance

def __call__(self):
    raise TypeError('Singletons must be accessed through `Instance()`.')

def __instancecheck__(self, inst):
    return isinstance(inst, self._decorated)
Is there a simple, elegant way to define singletons?