On 02/24/2015 05:56 PM, Gregory P. Smith wrote: > inspect.getargspec(method) and inspect.signature(method) both include > the 'self' parameter but how are we to figure out from method itself > that it is actually bound and that its first parameter is expected to > be a bound instance? Given the mechanisms involved, surely this question is a bit nonsensical? The function doesn't "expect" anything, it's just a function. (I remind you, Python 3 dropped the whole concept of an "unbound method".) If it happens to live inside a class, and it's accessed through an instance of the class, then the first parameter gets bound. Consider: >>> class A: ... def x(self, a): print(a) ... >>> a = A() inspect.signature(A.x).parameters has two parameters, "self" and "a". inspect.signature(a.x).parameters has only one parameter, "a". I claiim this is what you want. It's analagous to a functools.partial object. It would be awfully confusing if the signature of a functools.partial object include the parameters handled by the partial object. IMO inspect.getargspec and inspect.getfullargspec get this wrong; for a.x they include the "self" parameter. If you were constructing a call to this function dynamically you'd include one too many parameters. //arry/ -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20150225/da5c1f4d/attachment.html>
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4