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