Scope - import and globals
Tijs
tijs_news at artsoftonline.com
Wed May 30 09:25:29 EDT 2007
HMS Surprise wrote:
>
> In the file snippet below the value for the global hostName is
> determined at runtime. Functions imported from the parent baseClass
> file such as logon also need access to this variable but cannot see it
> the with the implementation I have attempted here.
Use a class variable:
class baseClass:
hostName = None # undefined yet
def someFunc(self):
assert self.hostName is not None, "hostname not set yet"
... # use hostName here
class temp(baseClass):
def runTest(self):
baseClass.hostName = getHostName()
...
or a global variable:
baseClass.py:
hostName = None
class baseClass:
def someFunc(self):
assert hostName is not None
....
testme.py:
import baseClass
class temp(baseClass.baseClass):
....
baseClass.hostName = getHostName()
although neither solution strikes me as very elegant. I would normally pass
the hostname to the constructor of baseClass or use a separate 'settings'
module.
Global variables are per-module. Use the "global" keyword when assigning a
global variable in the 'current' module. Global variables of other modules
are properties of the module, use <module>.<name>.
>
> Also, functions in this file and in the imported parent class need
> PyHttpTestCase. Does there need to be an import statement in both
> files?
Yes. Don't worry, the work is done only once.
Regards,
Tijs
More information about the Python-list
mailing list