How to initialize a class variable once
George Sakkis
george.sakkis at gmail.com
Tue Dec 9 11:31:41 EST 2008
On Dec 9, 10:36 am, Joe Strout <j... at strout.net> wrote:
> On Dec 9, 2008, at 4:31 AM, Brian Allen Vanderburg II wrote:
>
> > There is one situation where a module can be imported/executed
> > twice, if it is the __main__ module.
>
> That's an excellent point -- this is something I've run into, and it
> always feels a bit awkward to code around it. What's the standard
> idiom for avoiding this issue in a complex app? Have a "main" file
> that is not imported by anything else, and which does little but
> launch stuff from some other module?
Yes, I believe that's the common practice. Still, whenever I end up
putting stuff in a "main" file and run into the double import problem
(e.g. when pickling), I do an explicit "from main import *" after all
the definitions, i.e.:
# myscript.py
__all__ = ['foo', 'Bar']
def foo(x,y):
...
class Bar(object):
....
from myscript import *
if __name__ == '__main__':
assert foo.__module__ == Bar.__module__ == 'myscript'
George
More information about the Python-list
mailing list