The inspect.getargspec and getfullargspec functions allow you to extract 
the function call signature for Python functions and methods. This allows 
you to work out the constructor signature for pure-Python classes, by 
calling inspect.getargspec on the __init__ or __new__ method.


>>> import inspect
>>> class X:
...     def __init__(self, a, b, *args):
...             pass
... 
>>> inspect.getargspec(X.__init__)
ArgSpec(args=['self', 'a', 'b'], varargs='args', keywords=None, 
defaults=None)



So far so good. But if the __init__ method is inherited directly from a 
built-in, getargspec fails:


>>> class Y(int):
...     pass
... 
>>> inspect.getargspec(Y.__init__)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.2/inspect.py", line 794, in getargspec
    getfullargspec(func)
  File "/usr/local/lib/python3.2/inspect.py", line 821, in getfullargspec
    raise TypeError('{!r} is not a Python function'.format(func))
TypeError: <slot wrapper '__init__' of 'object' objects> is not a Python 
function


How do I programmatically get the argument spec of built-in types' 
__init__ or __new__ methods?



-- 
Steven
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to