barry@zope.com (Barry A. Warsaw) writes: > >>>>> "MH" == Michael Hudson <mwh@python.net> writes: > > MH> Some time ago, Gareth McCaughan suggested a syntax for > MH> staticmethods. You'd write > > MH> class C(object): > | def static(arg) [staticmethod]: > | return 1 + arg > > | C.static(2) > | => 3 > > Very interesting! Why the square brackets though? Is that just for > visual offset or is there a grammar constraint that requires them? Um, no big reason; they were what Gareth suggested, so I implemented that. He may have got the idea from the slides from one of Guido's presentations -- it was reading them that reminded me I'd done this and wanted to mention it here. Note, though, that my patch allows an arbitrary number of *expressions* in the square brackets; in principle you can do things like: >>> def h() [apply, (lambda f:(lambda : f() + 1))]: ... return 1 ... and have `h' be 2 (except that this caused an abort at the moment -- I must have missed something in my symtable code). Not sure whether this is a good idea, of course, but allowing arbitrary expressions does actually make the compiling easier. Allowing arbitrary expressions without delimiters sounds like a bad idea, both for parsers and people. > I'd leave them out of the picture, unless you mean to imply that a > list is acceptable in that position <wink>. Well, it is, at the moment... Cheers, M. -- : exploding like a turd Never had that happen to me, I have to admit. They do that often in your world? -- Eric The Read & Dave Brown, asr
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4