[Python-Dev] Call for defense of @decorators
Gustavo Niemeyer
niemeyer at conectiva.com
Thu Aug 5 21:17:10 CEST 2004
Hi Bob,
> >Why are they special? Why should they be more important than any other
> >part of the function definition?
>
> Because they take a function object as input and can do whatever they
> want with it and return something else.
This seems extremely powerful. OTOH, perl is also powerful.
> >>def saveSheetDidDismiss_returnCode_contextInfo_(self, sheet,
>
> >What is objc.signature() doing?
>
> objc.signature wraps the function object with an objc.selector that
> specifies specific return and argument types. In this particular case,
> it declares that the selector
> saveSheetDidDismiss:returnCode:contextInfo: returns void and takes an
> object and an integer as arguments. Without this, the selector can not
> be bridged correctly to the Objective C runtime and the program would
> crash.
Isn't metaclass usage helpful in this case?
Or a perhaps a dictionary?
__signature__ = {"funcname": "v@:@i"}
or
def funcname(...):
...
funcname.signature = "v@:@i"
and a postprocessor like:
objc.register(classname)
> The ctypes package behaves similarly and would use decorators for the
> same thing. I imagine that other runtime/language bridges would also
> benefit from similar techniques (Jython, IronPython, Python.NET,
> JPython.. or whatever else). I can also imagine it being used for
> things like XML-RPC, SOAP, Apple Events, COM, etc. in a similar manner.
Is this something good? I mean, having function wrappers all
around the place? Wouldn't it be introducing unobvious code (magic?)
in packages which are working fine as they are?
Should I just throw away my t-shirt with the "zen of python" text? :-)
--
Gustavo Niemeyer
http://niemeyer.net
More information about the Python-Dev
mailing list