Syntax modification idea: (classmethods, properties locking...)
Andrew Bennetts
andrew-pythonlist at puzzling.org
Thu Jan 16 21:37:31 EST 2003
On Thu, Jan 16, 2003 at 05:06:23PM -0800, Dennis Lee Bieber wrote:
> Arne Koewing fed this fish to the penguins on Thursday 16 January 2003
> 01:03 pm:
>
> >
> > why not extending the def statement?
> >
> > class bar(object):
> > def foo(class,arg1) is classmethod:
> > pass
> > def bar(arg1) is staticmethod:
> > pass
>
> I think I'd prefer just modifying the def keyword...
>
> defclass ...
> defstatic ...
>
> with plain def retaining the effect it has at present.
The problem is that classmethod and staticmethod are so special that they
require new keywords -- you can easily implement them in python (using
descriptors). More importantly, you could easily implement other wrappers,
which ideally you could use just as easily.
Thus I quite like the idea of "def foo(...) is classmethod" (or perhaps
"def foo(...) as classmethod"?). If I implement a "synchronised" wrapper for
an otherwise thread-unsafe method (which would be quite straightforward),
I'd quite like to be able to write "def foo(...) is synchronised".
> "is" already has meaning in the language when doing compares -- I'd
> rather not overload it as a noise verb "def ... [is] classmethod:"
> wouldn't change if one left out the "is".
Yeah, I appreciate your concern, but I don't think there's much risk of
confusing a function declaration with a comparison. And the advantage of it
reading so clearly is worth it "def foo(...) is classmethod" can be read
out-loud as "define foo (with parameters ...), which is a classmethod".
To my eyes it looks natural... my only concern is that it's *too* natural --
it's almost magical ;)
-Andrew.
More information about the Python-list
mailing list