On Tue, Nov 18, 2008 at 4:14 PM, r0g <[EMAIL PROTECTED]> wrote: > Hi There, > > I'm refactoring some old code that uses global variables and was > originally written in one big flat file with a view to nicening it up > and then extending it. The problem I have though is when I move the > various classes out to their own separate files and reimport them back > in they can't see the globals in the main program. Most of the globals > were just constants and so I have been able to factor them out but > there's one that's kind of pivotal that I still need, basically a list > of all the threads I have running, I don't see how I could get rid of > that. Example follows... > > The original with global variable and classes all in one file... > > dirty_global = "whatever" > class example(): > def print_message(self): > print "Sure, "+dirty_global > a = example() > a.print_message() > >>>>Sure, whatever > > > But when I put the class in its own file and then import it back in... > > > from example_class import example > dirty_global = "whatever" > a = example() > a.p() > >>>>NameError: global name 'dirty_global' is not defined > > > > I had thought declaring the variable using the global keyword at the top > of the file might make it a global 'proper' (as per the manual) or that > using it at the top of the class file might somehow allow the class to > see the variable in file it was called from but clearly my understanding > of python namespaces and scoping isn't quite there yet as neither of > these seem to make any difference.
A `global` declaration at the module-level, while syntactically valid, doesn't do anything. It only really makes sense to use `global` in function bodies. And as Gabriel explained, Python has no program-wide global scope. Global scope is always module-specific. Cheers, Chris -- Follow the path of the Iguana... http://rebertia.com > > How can get my classes to see this 'dirty_global' variable again? > > Thanks, > > Roger. > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list