2

I have the following class in Python.

import os,ConfigParser

class WebPageTestConfigUtils:

    def __init__(self, configParser=None, configFilePath=None):
        self.configParser = ConfigParser.RawConfigParser()
        self.configFilePath = (os.path.join(os.getcwd(),'webPageTestConfig.cfg'))

    def initializeConfig(self):
        configParser.read(configFilePath)
        return configParser

    def getConfigValue(self,key):
        return configParser.get('WPTConfig', key)

def main():
webPageTestConfigUtils = WebPageTestConfigUtils()
webPageTestConfigUtils.initializeConfig()
webPageTestConfigUtils.getConfigValue('testStatus')

if  __name__ =='__main__':
main()

Upon execution . This gives me the error.

NameError: global name 'configParser' is not defined.

Why is python not able to recognize the instance variable here. ~
~

1
  • You don't need extra ( ) around os.path.join(os.getcwd(), 'webPageTestConfig.cfg') Commented Nov 4, 2014 at 6:30

2 Answers 2

3

You are defining

...
self.configParser = ConfigParser.RawConfigParser()
...

And accessing using

...
configParser.read(configFilePath)
...

You have to access as self.configParser.

Sign up to request clarification or add additional context in comments.

Comments

1

That's expected. In your code, python will not be able to access class members without self. Here is the correct code:

def initializeConfig(self):
    self.configParser.read(self.configFilePath)
    return self.configParser

def getConfigValue(self,key):
    return self.configParser.get('WPTConfig', key)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.