> 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

Reply via email to