Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #97097 > unrolled thread

Re: Modifying signature of ctor in class

Started byChris Angelico <rosuav@gmail.com>
First post2015-09-25 08:07 +1000
Last post2015-09-25 08:07 +1000
Articles 1 — 1 participant

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: Modifying signature of ctor in class Chris Angelico <rosuav@gmail.com> - 2015-09-25 08:07 +1000

#97097 — Re: Modifying signature of ctor in class

FromChris Angelico <rosuav@gmail.com>
Date2015-09-25 08:07 +1000
SubjectRe: Modifying signature of ctor in class
Message-ID<mailman.149.1443132450.28679.python-list@python.org>
On Fri, Sep 25, 2015 at 7:45 AM, Joseph L. Casale
<jcasale@activenetwerx.com> wrote:
>> 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.
>
> Hi Chris,
> That is helpful. It still leaves me with generating a string function
> and eval'ing or compiling it to swipe the sig. At the point I could
> rebuild the entire function and simply apply it.
>
> Where all but a valid sig helps is for introspection such as tab completing
> with ipython or using an IDE etc.

I've no idea what your tab completion tools are going to be looking
at, so you'd have to dig into that and find out. This trick may or may
not work, but if it does, it'd mean you could possibly come up with
something that pretends to be a function (for introspection purposes),
without actually being one. That would let you construct a class that
ducktypes as a function and can return whatever it likes from
inspect.signature().

ChrisA

[toc] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web