Home     |     .Net Programming    |     cSharp Home    |     Sql Server Home    |     Javascript / Client Side Development     |     Ajax Programming

Ruby on Rails Development     |     Perl Programming     |     C Programming Language     |     C++ Programming     |     IT Jobs

Python Programming Language     |     Laptop Suggestions?    |     TCL Scripting     |     Fortran Programming     |     Scheme Programming Language


 
 
Cervo Technologies
The Right Source to Outsource

MS Dynamics CRM 3.0

Python Programming Language

Scope - import and globals


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()

"HMS Surprise" <j@datavoiceint.com> skrev i en meddelelse
news:1180455769.891470.116360@p47g2000hsd.googlegroups.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

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

Add to del.icio.us | Digg this | Stumble it | Powered by Megasolutions Inc