PEP 318: Can't we all just get along?

Bruno Desthuilliers bdesth.quelquechose at free.quelquepart.fr
Wed Aug 18 04:11:27 EDT 2004


Kevin Smith wrote:
> For what it's worth, I wrote the original PEP 318.  I probably wasn't 
> qualified, but I just wanted a nice simple way to declare class methods 
> without having to repeat the function name.  After submitting it to BDFL 
> for approval, more work was needed and the discussion of PEP 318 on 
> python-dev increased rapidly.  It was evident that I was in over my head, 
> so I asked more someone more experienced to take over.  
> 
> I guess others had bigger plans for my proposal that I had planned.  It 
> has turned into the "solution" to many problems: type checking (both 
> arguments and returned values), metaclasses, metadata, interfaces, 
> function attributes, etc.).  Unfortunately, in the process, this simple 
> request for syntactical sugar has turned into a monstrosity.  In my 
> opinion, none of the proposed syntaxes really seem Pythonic.  This PEP 
> just seems to be trying to solve too many problems.
> 
> Bear with me, but I'd like to propose one more syntax that is simple, 
> easy for newbies to understand,  and nowhere near as powerful as the 
> current PEP's syntax.  However, it doesn't add incoherent, arbitrary 
> syntax either.
> 
> def classmethod foo(x, y, z):
>     pass
> 
> That's it.  One "decorator" that is a callable object that takes a 
> method as it's only argument.  No expressions, lists, tuples, etc.  Just 
> one callable object.  

+2 for me.


> Ok, if you absolutely must have more than one.
 > def classmethod synchronized foo(x, y, z):
 >     pass

No. If you want more than one, provide your own decorator, ie :

def synchronizedClassmethod(method):
   return synchronized(classmethod(method))

def synchronizedClassmethod foo(x, y, z):
   pass

My 2 eurocents
Bruno




More information about the Python-list mailing list