Descriptors and side effects
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. ;)
>> 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.
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. :)
PS: Sorry about the weird reposts. Thunderbird chaos.
More information about the Python-list