On Tue, 22 Mar 2016 03:15 am, Ian Kelly wrote: > On Mon, Mar 21, 2016 at 9:38 AM, Joseph L. Casale > <jcas...@activenetwerx.com> wrote: >> With non static properties, you can use a decorator that overwrites the >> method on the instance with an attribute containing the methods return >> effectively caching it. > > Can you give an example of what you mean?
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.) >> What technique for a static property can be used to accomplish what the >> descriptor protocol does? >> >> I need to cache the results of a method on a class across all instances. > > Why not do the same thing but using a class attribute instead of an > instance attribute? Properties don't work when called from a class: py> class Test(object): ... @property ... def x(self): ... return 999 ... py> Test.x == 999 False py> Test.x <property object at 0xb7a148b4> 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 -- Steven -- https://mail.python.org/mailman/listinfo/python-list