By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,548 Members | 1,495 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,548 IT Pros & Developers. It's quick & easy.

static information...

P: n/a
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?
Jul 18 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
Try A.static.extend([1,2,3]) and see what that
give you.

Larry Bates

<ni**********@cimex.com.cu> wrote in message
news:ma************************************@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?

Jul 18 '05 #2

P: n/a
<ni**********@cimex.com.cu> wrote in message
news:ma************************************@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

Jul 18 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.