Some time ago, Gareth McCaughan suggested a syntax for staticmethods. You'd write class C(object): def static(arg) [staticmethod]: return 1 + arg C.static(2) => 3 The way this works is that the above becomes syntactic sugar for roughly: class C(object): def $temp(arg): return 1 + arg static = staticmethod($temp) Anyway, I thought this was a reasonably pythonic idea, so I implemented it, and thought I'd mention it here. Patch at: http://starship.python.net/crew/mwh/hacks/meth-syntax-sugar.diff Some other things that become possible: >>> class D(object): ... def x(self) [property]: ... return "42" ... hello! >>> D().x '42' (the hello! is a debugging printf I haven't taken out yet...) >>> def published(func): ... func.publish = 1 ... return func ... >>> def m() [published]: ... print "hiya!" ... hello! >>> m.publish 1 >>> def hairy_constant() [apply]: ... return math.cos(1 + math.log(34)) ... hello! >>> hairy_constant -0.18495734252481616 >>> def memoize(func): ... cache = {} ... def f(*args): ... try: ... return cache[args] ... except: ... return cache.setdefault(args, func(*args)) ... return f ... >>> def fib(a) [memoize]: ... if a < 2: return 1 ... return fib(a-1) + fib(a-2) ... hello! >>> fib(40) 165580141 # fairly quickly I'm not sure all of these are Good Things (esp. the [apply] one...). OTOH, I think the idea is worth discussion (or squashing by Guido :). Cheers, M. -- For every complex problem, there is a solution that is simple, neat, and wrong. -- H. L. Mencken
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