Two minor syntactic proposals

Clarence Gardner clarence at netlojix.com
Sun Jun 17 02:55:16 EDT 2001


In article <slrn9invsn.1ega.Gareth.McCaughan at g.local>,
	Gareth.McCaughan at pobox.com (Gareth McCaughan) writes:
> 
> Here are two things that would make Python feel a little
> nicer for me. (Which is not necessarily the same as "better",
> of course.) I'd be interested in comments.
> 
> The proposals are extremely minor; they change the meaning
> of no valid Python program and add no new semantics.
> I conjecture that both would be easy to implement.
> 
>                           *
> 
> 1. Syntax for extending an existing class.
> 
> Suppose you have a class and want to add a new method
> to it. (Why? It's someone else's, you aren't allowed to
> change the source, and subclassing won't do because
> these things are created by code you don't control.)
> 
> You can do it, thus:
> 
>     def new_method(self, x):
>         something_else()
>         return x+1
>     Thing.new_method = new_method
> 
> but that's rather ugly. I suggest that there be syntax
> which does the same thing as the existing "class", but
> updates an existing class instead of replacing it.
> Two possibilities that don't require new keywords:
> 
>     in class Thing:
>         def new_method(self, x):
>             something_else()
>             return x+1
> 
> or
> 
>     class Thing continue:
>         def new_method(self, x):
>             something_else()
>             return x+1
> 
> I like the first of these much better than the second.
> 
>                           *
> 
> 2. Syntax for defining methods.
> 
> Every now and then we get people complaining because it's
> too easy for them to forget to include a "self" argument
> in a method definition. Every now and then, I suspect that
> most Pythonistas forget. (I certainly do.) Suppose there
> were an alternative syntax, thus:
> 
>     class Thing:
>         def self.boring_method():
>             return 0
> 
> That has two advantages: (1) it looks more the way that
> the method will actually get used, and (2) it's harder
> not to notice if you miss the "self." out.
> 
> I'm sure this one must have been proposed before, but I
> don't see a PEP for it and have no recollection of why
> (if it was proposed before) it was disliked.
> 

-- 
Clarence Gardner
Software Engineer
NetLojix Communications
clarence at netlojix.com



More information about the Python-list mailing list