Bug in Python class static variable?

Duncan Booth duncan.booth at invalid.invalid
Mon Jul 2 06:52:42 EDT 2007


Bruza <benruza at gmail.com> wrote:

> I am trying to define a class static variable. But the value of the
> static variable seems to be only defined inside the file that the
> class is declared. See the code below. When I run "python w.py", I
> got:

When you run "python w.py" the *script* w.py is loaded as the module 
__main__. Importing a module called 'w' creates a new module which is 
unrelated to __main__. If you want access to variables defined in the main 
script then you need to import __main__.

Don't use 'from module import *':

The import statements are executed when the interpreter reaches them in the 
source. Even if you fix your code to import from __main__, the values you 
try to import from __main__ won't exist when the import statement executes: 
the first 'from a import *' will load and execute all of module 'a', but 
when that executes 'from __main__ import *' it just imports names defined 
in the main script *before* a was imported.

In general, don't try to do this: put all your classes into modules and 
just put minimal startup code into a script.



More information about the Python-list mailing list