我可以使用inspect.getargspec
来获取任何函数的参数名称,包括绑定方法:
>>> import inspect
>>> class C(object):
... def f(self, a, b):
... pass
...
>>> c = C()
>>> inspect.getargspec(c.f)
ArgSpec(args=['self', 'a', 'b'], varargs=None, keywords=None, defaults=None)
>>>
但是,getargspec
在参数列表中包含self
。
是否有通用的方法来获取任何函数的参数列表(最好是任何可调用的函数),如果它是方法,则排除self
?
编辑:请注意,我想在Python 2和3上都有一个解决方案。
答案 0 :(得分:0)
inspect.signature
排除方法的第一个参数:
>>> from inspect import signature
>>> list(signature(c.f).parameters)
['a', 'b']
您也可以手动删除args
的第一个元素:
from inspect import ismethod, getargspec
def exclude_self(func):
args = getargspec(func)
if ismethod(func):
args[0].pop(0)
return args
exclude_self(c.f) # ArgSpec(args=['a', 'b'], ...)