How to initialize a class variable once

John Machin sjmachin at lexicon.net
Tue Dec 9 05:44:53 CET 2008


On Dec 9, 3:36 pm, Matimus <mccre... at gmail.com> wrote:
> On Dec 8, 8:08 pm, Roy Smith <r... at panix.com> wrote:
>
> > I've got a class with a class variable:
>
> > class Foo:
> >    _map = {}
>
> > How do I make sure this only gets initialized the *first* time the
> > module containing the class is imported?  What appears to be happening
> > as it stands is each time the module gets imported, Foo._map get re-
> > initialized.
>
> Unless you are calling reload() on the module, it will only ever get
> _loaded_ once. Each additional import will just yield the existing
> module. Perhaps if you post an example of the behavior that leads you
> to believe that the class variables are getting reinitialized

and change it to
   class Foo(object):
because we care little about old-style classes these days
and put a print statement in the module just before the class
statement and print statements before and after each import statement
so that we can see what is happening.



More information about the Python-list mailing list