[Python-Dev] Call for defense of @decorators
Ronald Oussoren
ronaldoussoren at mac.com
Thu Aug 5 21:54:17 CEST 2004
On 5-aug-04, at 21:45, Neil Schemenauer wrote:
> On Thu, Aug 05, 2004 at 09:28:13PM +0200, Ronald Oussoren wrote:
>> On 5-aug-04, at 21:17, Gustavo Niemeyer wrote:
>>> def funcname(...):
>>> ...
>>> funcname.signature = "v@:@i"
>>
>> That should be workable for this specific example.
>
> Even nicer if '_' is bound to the last function defined.
>
> class SomeClass(objc):
> def funcname(...):
> ...
> _.signature = "v@:@i"
>
> The objc metaclass could take the 'signature' function attribute and
> transform the function.
>
>> It wouldn't work for the objc.accessor example. The objc.accessor
>> function/decorator deduces the right kind of signature from the
>> name and arguments of the function.
>
> Can't the metaclass do that?
Not every method is a property accessor. The metaclass does calculate a
default signature (all arguments are objects and the result is an
object) when it doesn't have better information (such as the signature
of a method with the same name in a superclass). Sadly enough that
isn't good enough for property setters. Some parts of Cocoa require
that a setter returns 'void'.
I'm trying to push the automatic detection of the right signature as
far as I can get to avoid having to use explicit annotations in user
code, but sometimes you just cannot avoid adding annotations.
Ronald
--
X|support bv http://www.xsupport.nl/
T: +31 610271479 F: +31 204416173
More information about the Python-Dev
mailing list