Message209141
| Author |
larry |
| Recipients |
Claudiu.Popa, Yury.Selivanov, larry, michael.foord, ncoghlan, terry.reedy, yselivanov |
| Date |
2014年01月25日.03:56:05 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1390622166.01.0.183307451664.issue17481@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
There's a major difference between getfullargspec/getargspec and inspect.signature: getfullargspec shows you the "self" parameter for bound methods, and inspect.signature does not.
>>> class C:
... def foo(self, a): pass
...
>>> c = C()
>>>
>>> import inspect
>>> str(inspect.signature(c.foo))
'(a)'
>>> inspect.getfullargspec(c.foo)
FullArgSpec(args=['self', 'a'], varargs=None, varkw=None, defaults=None, kwonlyargs=[], kwonlydefaults=None, annotations={})
>>> inspect.getargspec(c.foo)
ArgSpec(args=['self', 'a'], varargs=None, keywords=None, defaults=None)
This is why help() (currently) shows bound parameters for methods implemented in Python, but doesn't show them for methods implemented in C. pydoc uses inspect.getfullargspec for pure Python functions and inspect.signature for builtins. |
|