Guido's new method definition idea

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Sat Dec 6 10:34:12 EST 2008


On Sat, 06 Dec 2008 07:15:27 -0800, Russ P. wrote:

> On Dec 6, 4:32 am, Andreas Waldenburger <geekm... at usenot.de> wrote:
>> On Sat, 6 Dec 2008 04:02:54 -0800 (PST) bearophileH... at lycos.com wrote:
>>
>> > class C:
>> >     def $method(arg):
>> >         $value = arg
>>
>> > (Note there's no point after $, it's not currently possible).

If -- and that's a HUGE if -- the compiler is changed to allow $method, 
it could certainly be changed to allow $.method.

>> > Ruby
>> > uses @ and @@ for similar purposes. I agree that the code looks
>> > worse, but also shorter to read and write, so in lines of code that
>> > use many instance attributes, that short $ syntax helps keep the line
>> > shorter. So I may grow to accept this sugar...

If a line of code uses too many instance attributes to fit comfortably on 
a line, spread it over two lines. There is no newline shortage, they are 
a renewable resource.


>> But that is not the way Python is meant to work. There are several
>> tennets in the Zen of Python that don't chime well with this approach.
>> "self" is a speaking identifier, "$" isn't.
> 
> Is "@" a "speaking identifier? How about "#" and "!="? Last I heard,
> they were all part of Python.

Yes they are.

@f

is pronounced "at f" or "decorate f".

# comment

is pronounced "hash comment" or even not pronounced at all.

x != y

is pronounced "x not equal to y"


The proposed

def $method(arg):

would be pronounced "def dollar method arg" or "def method self arg". The 
first is ugly to my ears, the second confusing.

-2 on this proposal.



-- 
Steven



More information about the Python-list mailing list