I want to define a class-level attribute that will be shared by all subclasses. That is, I want this class, every subclass of this class, every instance of this class and every instance of every subclass to be able to read and write to the _same_ slot/variable. But I can't figure out how to do it.
My attempts so far have led me to using a descriptor as follow, but it doesn't get me where I want to be: class sharedClassVar(object): def __init__(self,x=None): print "creating" self.value = x def __get__(self,ob,cls): print "getting" return self.value def __set__(self,ob,x): print "setting" self.value = x class A( object ): # install it like this I guess: cls2 = sharedClassVar(5) class B( A ): pass print A.cls2 # so far so good o = A() o2 = B() print o.cls2 # ok print o2.cls2 # ok o.cls2 = 2 print B.cls2 # perfect print o2.cls2 # "" o2.cls2 = 3 print A.cls2 # "" print o.cls2 # "" # but I need to be able to update the value through the class # how do I do it? A.cls2 = 4 # whoops - we just overwrote the descriptor with an integer A.cls2.__set__(None,4) # AttributeError: 'int' object has no attribute '__set__' -- http://mail.python.org/mailman/listinfo/python-list