Do I need "self" and "other"?
robert.kern at gmail.com
Sat Jun 28 02:10:56 CEST 2008
Terry Reedy wrote:
> Kurda Yon wrote:
>> OK, I see. In the given example "self" is just a name which can be
>> replace by whichever (valid) name. Is that always like that? I mean,
>> does "slef" have a special meaning in some cases or it is always "just
>> a name like any other"?
> A method is a function bound to a class or instance thereof.
> Def statements create functions. Parameter names are arbitrary, as long
> as they do not conflict with any global names you want to access from
> within the function.
> Self (and other) are simply community conventions. They do have they
> advantage that if they are only used as function/method parameter names,
> then they will not conflict with any module globals.
It's worth noting that 'self' for the first parameter of a method is an
extremely strong convention. I highly encourage you to follow it. In particular,
classmethods and staticmethods don't take an instance of the class as the first
argument, so using 'self' for instance methods, 'cls' for classmethods, and
nothing in particular for staticmethods (since the first argument isn't special
at all), helps distinguish them when reading. You risk annoying your reader by
using something other than 'self' in an instance method.
By contrast, using 'other' for the other argument to a binary __mathoperation__
method is not a particularly strong convention. No one will be annoyed if you
use something else.
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the Python-list