static information...

John Roth newsgroups at jhrothjr.com
Mon Mar 22 18:25:09 EST 2004


<niurka.perez at cimex.com.cu> wrote in message
news:mailman.253.1079991337.742.python-list at python.org...
> I've been looking for a way of have static variables in a python class and
all I
> have found is this:
>
>  class A:
>             static =[]
>
>             def f(self):
>                         A.static = [1,2,3]
>
>
> That seems to be pretty static since that variable can be used either on
the
> class (such as A.static) or on an instance (such as A().static).
> Now my problem is that every time some create a new instance of this class
the
> variable static is reset to its original value [] and the real value that
it
> took is lost. What I want is someplace to store class's information and
not
> instance's information.
> Any idea?

It doesn't exist. The class level variable is a default for
an instance level variable. If you want a class level
variable, there are two ways of going about it.

One is to declare a getter and setter and make them
class methods; the other is the one you have discovered,
and that Larry Bates references.

for example:

class Foo(object):
    var = "bar"

    def setVar(klas, value):
        klas.var = value
    setVar = classmethod(setVar)

    def getVar(klas):
        return klas.var
    getVar = classmethod(getVar)

    def bar(self):
        self.setVar([1,2,3])

-------------------------------

Note that classmethod requires a new style
class, which is why the subclass from object.

HTH

John Roth
>
>





More information about the Python-list mailing list