[Python-Dev] Updated PEP 362 (Function Signature Object)

Alexandre Zani alexandre.zani at gmail.com
Fri Jun 8 06:56:23 CEST 2012


On Thu, Jun 7, 2012 at 9:41 PM, Nick Coghlan <ncoghlan at gmail.com> wrote:
> On Fri, Jun 8, 2012 at 2:20 PM, Alexandre Zani <alexandre.zani at gmail.com> wrote:
>> A comment on the way methods are handled. I have seen decorators that
>> do something like this:
>>
>> import functools
>>
>> def dec(f):
>>    functools.wraps(f)
>>    def decorated(*args, *kwargs):
>>        cursor = databaseCursor()
>>        return f(cursor, *args, **kwargs)
>>
>> As a result, if the decorated function has to be something like this:
>>
>> class SomeClass(object):
>>  @dec
>>  def func(cursor, self, whatever):
>>     ...
>>
>> Perhaps the decorator should be smarter about this and detect the fact
>> that it's dealing with a method but right now, the Signature object
>> would drop the first argument (cursor) which doesn't seem right.
>> Perhaps the decorator should set __signature__. I'm not sure.
>
> The decorator should set __signature__, since the API of the
> underlying function does not match the public API. I posted an example
> earlier in the thread on how to do that correctly.

OK, makes sense.
>
> Cheers,
> Nick.
>
> --
> Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia


More information about the Python-Dev mailing list