Descriptors and side effects

Rich Harkins rich at worldsinfinite.com
Mon Nov 5 21:16:59 CET 2007


Bruno Desthuilliers wrote:
> Which is easy to do with properties too.

True enough.  It's the caching of the return value that's the value add
of course.  ;)

> 
>>  After
>> it is applied, then the penalties for function call of the property and
>> the computation are wiped out once the second access is requested.
> 
> Agreed. But I wouldn't use such a scheme for mutable types - which are 
> still the common case.
> 

In many cases, yeah.  Though I use a lot of immutable stuff in some of
my pet projects and such.  ConstProperty is definitely not meant as a
replacement for property, only when something constant can be derived
from something else constant, especially when the derivation is expensive.

>> Now, in the original example, len() might be considered too little for
>> this use and should be just generated in the constructor "for free".
>> OTOH, that assumes that __len__ hasn't been overridden to do something
>> more complicated and time consuming.  If the antecedent object is
>> static, and the derivative consequent is also static,
> 
> You mean 'immutable', I assume...

Yeah, that's probably the better term.

[snip]

Again, I've used it quite a bit for various things and it's worked well
for the sort of thing the OP was requesting.  Of course, your mileage
may vary.  :)

Cheers!
Rich

PS: Sorry about the weird reposts.  Thunderbird chaos.




More information about the Python-list mailing list