Unbound Variable in Python

Unbound Variable in Python

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 assignment

What is going on here, shouldn't instance be statically assigned Null? What would be the right way to do this?

1

1 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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Maya Lin-Takahashi
Author

Maya Lin-Takahashi

Maya is a hardware enthusiast who tests and reviews smart home devices, smartphones, wearables, and audio gear. She focuses on practical consumer value and build quality.