On Feb 26, 2004, at 8:58 PM, Barry Warsaw wrote: > On Thu, 2004-02-26 at 18:43, Delaney, Timothy C (Timothy) wrote: > >> This isn't too bad. Probably better with a wrapper around sys.atexit - >> something like: >> >> def atexit (func): >> sys.atexit(func) >> return func >> >> def cleanup() [atexit]: >> >> otherwise it's not obvious that cleanup gets bound to None. Perhaps it >> should be a requirement of decorators that they return something other >> than None, and an exception is thrown if this contract is broken? > > Would it be better if it returned 1? <wink> > > Just what /is/ the contract for a decorator function? Maybe that it > takes a function/method object and must return a descriptor? I do > think > this needs some clarification in the PEP. Why bother? it doesn't have to be used inside of a class body, it shouldn't have to return a descriptor. It's pretty obvious that some of the most useful purposes include wrapping a function in some kind of closure (like synchronized) or returning a descriptor (like classmethod).. but who knows what else it might be useful for, especially when used on classes themselves, as the patch being kicked around allows you to do (I imagine it would be the end to some metaclass abuses, for example). -bob
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