Method / Functions - What are the differences?
jjposner at optimum.net
Thu Mar 18 17:48:35 CET 2010
On 3/10/2010 8:37 PM, Gabriel Genellina wrote:
> En Wed, 10 Mar 2010 11:45:38 -0300, John Posner <jjposner at optimum.net>
>> As I promised/threatened, here's the *start* of a write-up on
>> properties, aimed at non-advanced Python programmers:
> I'd use 'function' instead of 'procedure', as this last word is very
> uncommon in Python literature (also, "the procedure's return value..." may
> look very strange to some people).
I was trying to avoid the function-vs-method swamp, and so I used
"procedure". I agree that it was an unfortunate strategy. In a rewrite,
I'm using "function" for the most part
> I'm unsure if one should make a distinction 'storage attribute' vs.
> 'method attribute', or even if it makes things actually more clear.
Agreed -- I was trying too hard to be helpful, and introduced
> ... I
> think you could present the motivating idea first ("I want to execute some
> code when accessing an attribute") and only later talk about properties
That was my intention. I hope it comes across more clearly in the rewrite.
> and descriptors (as written, the reader still doesn't know how to define a
> simple property and you've already talked about deleting attributes...)
That doesn't bother me. It's OK to describe capabilities -- but not give
how-to's -- in an overview section.
And Edward Cherlin wrote:
> I find that it will explain things to those who already understand
> most of the concepts. However, I felt as though I were being led
> through a maze without knowing where we were headed.
> Who is your expected audience?
I was headed toward having the reader *really* understand the @property
decorator. And I was intending that reader to be a non-advanced Python
user -- say, at the CS 101 level. I'm now convinced that such a goal was
"a bridge too far". It has a lot moving parts, including a prerequisite
that is a major topic in itself -- the descriptor protocol. That puts
the goal way beyond reach.
There's another draft at:
Many thanks for your comments,
More information about the Python-list