首先,我正在使用python 2.7.13,因此我的选择非常有限。
我试过了:

@some_decorator
def xyz(self,a,b,c):
    pass
function_name = " xyz"
inspect.getargspec(getattr(self,function_name))

它给出:
ArgSpec(args=[], varargs='args', keywords='kwargs', defaults=None)

由于装饰器,其给出的0 args。如果我尝试其他方法,它会给出正确的参数列表。

最佳答案

解决方案之一可以使用ast模块:

import ast
def GetAllMethodsArgs(self):
    with open(os.path.abspath(__file__)) as file:
        node = ast.parse(file.read())

    classDefinitions = [n for n in node.body if isinstance(n, ast.ClassDef)]
    for classDef in classDefinitions:
        functions = [n for n in classDef.body if isinstance(n, ast.FunctionDef)]

    for function in functions:
        self.methodArgsdict[function.name] = len(function.args.args)

在定义methodArgsdict = {}之后,在类的初始化中调用此方法。该函数将以函数名称作为键和参数作为值填充字典。

08-05 11:41