Proposal for removing self

Ravi Teja Bhupatiraju webraviteja at yahoo.com
Thu Aug 26 03:33:19 EDT 2004


"Brent W. Hughes" <brent.hughes at comcast.net> wrote in message news:<T_7Xc.61360$Fg5.2281 at attbi_s53>...
> When doing object-oriented stuff, it bothers me to have to type "self" so
> many times.  I propose that Python allow the programmer to optionally type
> ".variable" instead of "self.variable" to mean the same thing.  Of course,
> the interpreter would have to be more careful about detecting floats that
> begin with just a period as in ".5".  What are your thoughts?

I know that this has been proposed before and am familiar with the
alternatives commonly suggested. I understand that most Python
programmers are happy with things the way they are in this respect.
But after 3 years of Python, somehow, I still keep forgetting to type
the darn thing. Of course, I always  catch the omission quickly but
that makes me wish there was a better alternative. Python has
generally been about less typing and self seems somewhat contrary to
that.

This following is not a carefully thought one but I would be
interested to know what your opinions are. The following is inspired
by win32all.

<from Python COM  docs>
class HelloWorld:
    _public_methods_ = ['Hello']
    _public_attrs_ = ['softspace', 'noCalls']
    _readonly_attrs_ = ['noCalls']
   
    def __init__(self):
        pass
</from Python COM  docs>

How about having an optional attribute for a class that negates the
requirement for self?

One advantage with this is I can see all the member variables in one
place. Great while reading code.

<sample>
class FooBar:
    __public__ = [Name, Age]
    def setName(name):
        Name = name
</sample>

While I am complaining, a few other peeves ...

Another thing is I dislike is having to use __ for *every* private
variable. For *me* __private__ at the top of the class definition code
would be more elegant. __readonly__ would be another nicety.

Introducing the above attributes into the language would not likely
break any existing Python code.

Just my 2c.



More information about the Python-list mailing list