/ Published in: Python
                    
                                        
The ASPN cookbook has many recipes for singletons in Python. So far, this one
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/412551
has been my favourite, because it is so simple and concise. However, I just ran into a brick wall when I tried to use it with a class that can be initialized with keyword arguments. This is my first draft for a solution to this problem. It's quick and dirty; please give it a glance and leave a comment if you find a problem.
                http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/412551
has been my favourite, because it is so simple and concise. However, I just ran into a brick wall when I tried to use it with a class that can be initialized with keyword arguments. This is my first draft for a solution to this problem. It's quick and dirty; please give it a glance and leave a comment if you find a problem.
                            
                                Expand |
                                Embed | Plain Text
                            
                        
                        Copy this code and paste it in your HTML
class Singleton(type):
def __init__(self, *args, **kwds):
type.__init__(self, *args, **kwds)
self._instances = {}
def __call__(self, *args, **kwds):
sig = args + tuple(sorted(kwds.items()))
if not sig in self._instances:
self._instances[sig] = type.__call__(self, *args, **kwds)
return self._instances[sig]
Comments
 Subscribe to comments
                    Subscribe to comments
                
                