Explicit Frustration of the Self

Sean Ross sross at connectmail.carleton.ca
Tue Dec 31 13:47:45 EST 2002


"Andrew Koenig" <ark at research.att.com> wrote in message
news:yu99n0mmw48b.fsf at europa.research.att.com...
>
> How would you like to be able to write it instead?  Show us some
> examples.  Whatever you come up with, I'll bet it will be possible
> to find even greater problems.
>

Well, this will never happen, because it would break too much code, but
I've always been partial to making 'self' a keyword and then defining
methods as

def self.method(*args):
    pass

Personally, I find this both more explicit and more intuitive than the
current form,
    method(self, *args).

More explicit, in that it is fairly obvious that  you are defining a method
that will be called by self,
as opposed to defining a method that will be passed self as an argument, as
the current form suggests.
Moreover, this new form more closely reflects the usage of your method:

inside the class, you call the method by using
    self.method()

outside the class, you call the method with an instance,
   inst.method()

You would not call the method as
     method(self)
or
    method(inst)
but the current form makes it look like this is what should be done. We know
better because we've learned
the proper usage, still I would suggest that the new form is more intuitive
than the current for the simple reason
that it uses the same form in its definition as in its usage.

As regards making self a keyword... it is highly unlikely to be done -
backwards compatability, you know.
Still, I would like to see it. The use of self is so ubiquitous in python:
You can say,
      def method(this, *args):
           pass
but few if any do for the simple reason that just about everyone else uses
self.
In particular, I would like to see the keyword self so that I could write
code like this:

    def self.method(arg=self.data):
        pass

as opposed to
    def method(self, arg=None):
        if arg is None:
            arg = self.data

or some such similar meanderings.

Anyway, hopes and dreams and hills of beans...  You can either make what you
want or use what you've got.
For the time being I'll use what I've got and be grateful to those who've
made most of what I want.
Thanks,
Sean





More information about the Python-list mailing list