[Python-Dev] A syntax for function attributes?

Michael Hudson mwh@python.net
Wed, 30 Jul 2003 17:26:44 +0100


Barry Warsaw <barry@python.org> writes:

> On Wed, 2003-07-30 at 11:38, Mark Nottingham wrote:
>> PEP 232 lists syntactic support for function attributions to be a 
>> possible future direction. I would very much like to use function 
>> attributes for associating metadata with functions and methods, but the 
>> lack of such syntactic support precludes their use, so I end up 
>> (ab)using __doc__.
>> 
>> Has there been much further consideration of this issue? I'm not too 
>> particular about the chosen syntax, I just need something that doesn't 
>> require qualification with the function name (which tends to reduce 
>> readability/typeability, in some cases drastically so).
>> 
>> I'm happy to write a PEP if that will help, but wanted to get a sense 
>> of what people's thinking was.
>
> Function attributes of course already exist.  They seem like they'd be
> really cool to use <wink>.

Hmm, that's a surprise, coming from you :-)

> But I agree.  I think we did well not introducing new syntax for Python
> 2.3 so we owe it to ourselves to break that bad habit. :)  
>
> I'd also like to see syntactic support for method annotations, hooking
> into descriptors.  I've been using a lot of properties in some recent
> code and while they are very very cool (and IMO improve Python in some
> important ways), they are still too tedious to use.  I think the method
> annotation idea would be an elegant addition.

Method annotations can be made to do function attributes:

def attrs(**kw):
    def _(func):
        for k in kw:
            setattr(func, k, kw[k])
        return func
    return _

def func() [attrs(a=1, b=42)]:
    pass

but I don't recall how they do properties (and let's not have the
"extended function syntax" thread again, please).

Cheers,
mwh

-- 
  Now this is what I don't get.  Nobody said absolutely anything
  bad about anything.  Yet it is always possible to just pull
  random flames out of ones ass.
         -- http://www.advogato.org/person/vicious/diary.html?start=60