Python 3.x 如何在python中打印函数参数?

Python 3.x 如何在python中打印函数参数?,python-3.x,Python 3.x,我正在尝试创建一个字典,将驻留在模块中的类名添加到它们的构造函数参数中 构造函数args还应该是一个字典,我将在其中存储参数的默认值(无论定义在哪里) 任何线索都会非常有用。提前谢谢 为了提供关于用例的更多细节,我在这里试图为图中提到的所有类做些什么 我想获得的构造函数参数,例如,请参考下图 如果我理解正确,您只需要在\uuuu init\uuuu的签名中输入参数的名称即可 这实际上非常简单,使用: 现代python答案: 导入检查 signature=inspect.signature(你的类

我正在尝试创建一个字典,将驻留在模块中的类名添加到它们的构造函数参数中

构造函数args还应该是一个字典,我将在其中存储参数的默认值(无论定义在哪里)

任何线索都会非常有用。提前谢谢

为了提供关于用例的更多细节,我在这里试图为图中提到的所有类做些什么

我想获得的构造函数参数,例如,请参考下图

如果我理解正确,您只需要在
\uuuu init\uuuu
的签名中输入参数的名称即可

这实际上非常简单,使用:

现代python答案

导入检查
signature=inspect.signature(你的类)
对于名称,signature.items()中的参数:
打印(名称、parameter.default、parameter.annotation、parameter.kind)
过时的答案

import inspect

signature = inspect.getargspec(your_class.__init__)
signature.args # All arguments explicitly named in the __init__ function 
signature.defaults # Tuple containing all default arguments
signature.varargs # Name of the parameter that can take *args (or None)
signature.keywords # Name of the parameter that can take **kwargs (or None)
您可以将默认参数映射到相应的参数名称,如下所示:

argument_defaults = zip(signature.args[::-1], signature.defaults[::-1])

最近,开展了以下工作:

import inspect

signature = inspect.signature(yourclass.__init__)

for param in signature.parameters.values():
    print(param)

区别在于(与接受的答案相比),
参数
实例变量需要访问。

请注意,
getargspec
自3.0以来一直被弃用。对于2/3,应使用compat代码
getfullargspec
,如果仅适用于现代python,则应使用compat代码。感谢您的回答。虽然当我尝试编写这段代码时,它会给我类似的东西:[self']None-args-kwargs。但它不打印实际参数。我可能遗漏了什么。我用更多细节更新了问题,以解释实际用例。
self
始终是
\uuuu init\uuuu
调用的第一个参数。你可以把它过滤掉。否则我不理解您的问题。您可以执行
检查.signature(您的\u类)
,而不使用
\uuuuu init\uuuuuu
,在这种情况下,它不会列出
self