16 lines
462 B
Python
16 lines
462 B
Python
class Singleton:
|
|
def __init__(self, decorated):
|
|
self._decorated = decorated
|
|
|
|
def instance(self):
|
|
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) |