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