By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
439,931 Members | 1,976 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 439,931 IT Pros & Developers. It's quick & easy.

Scope - import and globals

P: n/a

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.

Also, functions in this file and in the imported parent class need
PyHttpTestCase. Does there need to be an import statement in both
files?
Thanks,

jh

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
from PyHttpTestCase import PyHttpTestCase
from baseClass import baseClass

# definition of test class
class temp(baseClass):

def runTest(self):
global hostName
hostName = getHostNameFromUser()
self.logon()

May 29 '07 #1
Share this Question
Share on Google+
2 Replies


P: n/a

"HMS Surprise" <jo**@datavoiceint.comskrev i en meddelelse
news:11**********************@p47g2000hsd.googlegr oups.com...
>
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.

Also, functions in this file and in the imported parent class need
PyHttpTestCase. Does there need to be an import statement in both
files?
If a file needs an import, make the import!
Dont rely on other file's imports , in general, imho.

Not sure excactly what you are doing, but are you sure you dont want an
instance variable instead of a global ?
self.hostName = "blah"
And then a getHostName() method in the class ?

regards
Troels

May 29 '07 #2

P: n/a
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
May 30 '07 #3

This discussion thread is closed

Replies have been disabled for this discussion.