Modifying signature of ctor in class

Chris Angelico rosuav at gmail.com
Thu Sep 24 23:38:58 CEST 2015


On Fri, Sep 25, 2015 at 6:28 AM, Joseph L. Casale
<jcasale at activenetwerx.com> wrote:
> I have a class factory where I dynamically add a constructor to the class output.
> The method is a closure and works just fine, however to accommodate the varied
> input its signature is (*args, **kwargs).
>
> While I modify the doc strings, the ctor sig is not optimal. Without building
> this a string and using eval, is there anything that can be done about this?
>

I don't think you can easily change the function's own definition,
other than by using eval (or equivalent shenanigans, like crafting
your own bytecode); but as of Python 3.something, the help() function
looks for a __wrapped__ attribute and will take function args from
that instead of the function itself. That way, when you use
functools.wraps(), it copies in the docstring and stuff, and as far as
help() is concerned, copies in the argument list too.

No idea whether you'll be able to do that too, but it's a fairly
effective way to get around the problem if you can.

ChrisA


More information about the Python-list mailing list