[Python-Dev] Dinamically set __call__ method

Nathaniel Smith njs at pobox.com
Tue Nov 4 20:23:03 CET 2014


On Tue, Nov 4, 2014 at 7:15 PM, Roberto Martínez
<robertomartinezp at gmail.com> wrote:
>
>
> On Tue, Nov 4, 2014 at 8:06 PM, Skip Montanaro <skip.montanaro at gmail.com>
> wrote:
>>
>>
>> On Tue, Nov 4, 2014 at 1:01 PM, Roberto Martínez
>> <robertomartinezp at gmail.com> wrote:
>>>
>>> The workaround of calling a different method inside __call__ is not valid
>>> for my case because I want to change the *signature* of the function also
>>> -for introspection reasons.
>>
>>
>> You could define __call__ like so:
>>
>> def __call__(self, *args, **kwds):
>>     self._my_call(*args, **kwds)
>
>
> This was my first approach, but it is not very informative to the user and I
> prefer to have arguments with descriptive names. We have to change __doc__
> too, so this is not an ideal solution for me.
>
> I tried to implement __getattribute__, but is not called either. :(

I'd suggest starting a new thread on python-list (or stack overflow or
whatever) explaining what the heck you're trying to do here and asking
for higher-level advice/suggestions, because your current
implementation strategy seems to have placed you on a path that is
rapidly descending past "spaghetti" towards "tentacular".

(Or alternatively I guess you could go all in: Iä! Iä! Metaclasses Fhtagn!)

-n

-- 
Nathaniel J. Smith
Postdoctoral researcher - Informatics - University of Edinburgh
http://vorpus.org



More information about the Python-list mailing list