[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!)


Nathaniel J. Smith
Postdoctoral researcher - Informatics - University of Edinburgh

More information about the Python-list mailing list