[Tutor] R: Re: Re: Re: Class learning
cs at zip.com.au
Sat Jan 24 02:50:40 CET 2015
On 24Jan2015 00:47, Alan Gauld <alan.gauld at btinternet.com> wrote:
>On 24/01/15 00:37, Cameron Simpson wrote:
>>By contrast, I use it a far bit (though still far less than non-property
>>methods). Generally for derived properties which are:
>> - cheap to compute i.e. O(1)
>> - which I want to abstract
>> - usually represent some property which is stable, such as a size
>> - occasionally (much more rarely) a property which is not stable,
>But why a property rather than a simple method?
>k = url.key
>k = url.key()
>for meeting those criteria?
Because it is a value that feels like an attribute.
A method that always returns the same value for a given object (and is very
cheap) is, to my mind, not worth burdening the caller with the detail that is
it a function.
If the caller can ask for o.key() and be given a value that is stable, and will
not change (and therefore will never require another call if the caller bothers
keeping the value around) then why should the caller care that it is a
function? So why should it even look like a function?
It should look and feel like any other object attribute - a simple value that
can just be examined.
My intuition is that a function is costly (potentially) and that consulting an
attribute is very cheap. I don't want to break such intuition.
Consider .keys() for a dynamic mapping. Changeable, and expensive. It should
look like a function.
Cameron Simpson <cs at zip.com.au>
A pessimist is an optimist in full possession of the facts.
More information about the Tutor