Just came up with a simple pattern for singletons in Python using a class decorator:
def singleton(cls):
instances = {}
def instance():
if cls not in instances:
instances[cls] = cls()
return instances[cls]
return instance
Little demo:
>>> @singleton ... class Foo(object): ... pass ... >>> f1 = Foo() >>> print id(f1) 3077430124 >>> f2 = Foo() >>> print ...