> I think Joseph is using "static" in the Java sense of being associated with > the class rather than an instance. (In Java, members of classes must be > known at compile-time.)
Yup, so a single value on the class itself, not instance specific. > But what you can do is have the property refer to a class attribute: > > > py> class Test(object): > ... _private = 999 > ... @property > ... def x(self): > ... return type(self)._private > ... @x.setter > ... def x(self, value): > ... type(self)._private = value > ... > py> a = Test() > py> b = Test() > py> c = Test() > py> a.x > 999 > py> b.x = 50 > py> c.x > 50 > py> a.x > 50 Right, but _private refers to an api call that is expensive and may not even be accessed, so while I may new up three instances of Test across a, b and c, if none of those end up accessing var x, it shouldn't get fetched. Without some deferred execution, if the value of _private is a callable whose return value is what I am interested in, it gets invoked the moment the class is compiled. In the non static sense this is trivial to accomplish with the descriptor protocol, I am just not clear for the static sense. Thanks Ian and Steven, jlc -- https://mail.python.org/mailman/listinfo/python-list