I am trying to make a toy singleton in python to learn the ins and outs of the language and am running into a problem with how python works. I declare the class like this
class ErrorLogger: # Singleton that provides logging to a file instance = None def getInstance(): # Our singleton "constructor" if instance is None : print "foo"when I call it with
log = ErrorLogger.getInstance()I get
File "/home/paul/projects/peachpit/src/ErrorLogger.py", line 7, in getInstance if instance is None : UnboundLocalError: local variable 'instance' referenced before assignmentWhat is going on here, shouldn't instance be statically assigned Null? What would be the right way to do this?
11 Answer
You have to call it with ErrorLogger prefix as it is a static variable.
class ErrorLogger: # Singleton that provides logging to a file instance = None @staticmethod def getInstance(): # Our singleton "constructor" if ErrorLogger.instance is None : print "foo" 2