我想找出Python中某个方法的优点(它接收的参数数量)。现在我正在这样做:
def arity(obj, method):
return getattr(obj.__class__, method).func_code.co_argcount - 1 # remove self
class Foo:
def bar(self, bla):
pass
arity(Foo(), "bar") # => 1
我希望能够实现这一目标:
Foo().bar.arity() # => 1
更新 :现在上面的函数无法使用内置类型,对此的任何帮助也将不胜感激:
# Traceback (most recent call last):
# File "bla.py", line 10, in <module>
# print arity('foo', 'split') # =>
# File "bla.py", line 3, in arity
# return getattr(obj.__class__, method).func_code.co_argcount - 1 # remove self
# AttributeError: 'method_descriptor' object has no attribute 'func_co
inspect
Python标准库中的模块是您的朋友-
请参阅在线文档!
inspect.getargspec(func)
返回四个选项的元组,args, varargs, varkw, defaults
:len(args)
是“主元数”,但参数数量可以从任何东西到无穷大,如果你有varargs
和/或varkw
没有None
,而一些参数可以省略(默认和)如果defaults
不是None
。你怎么把它变成一个数字,击败了我,但想必你有主意了!-)
这适用于Python编码的函数,但不适用于C编码的函数。除了通过docstring(或可选地通过Python 3中的 注释 )外,Python C
API中没有任何内容允许C编码的函数(包括内置函数)公开其内省签名。因此,如果其他方法失败(最后,文档字符串也可能会丢失,在这种情况下该功能将仍然是个谜),您
将 需要退后一步来作为最后的切入点来解析文档字符串。
问题内容: IOW,我只需要移交“ a.some”即可访问“ a”。 问题答案: 从python 2.6开始,您可以使用特殊属性: 已在py3k中淘汰。 有关详细信息,请参见Python标准库中的模块。
我曾尝试在Python中查找立方根,但不知道如何找到它。有一行代码有效,但他不给我完整的数字。例子: 这不是给我4强硬,而是3.99999。有人知道我该怎么解决这个问题吗?
我正在用java制作一个虚数图形计算器(使用bi={a,b}),并希望为 - * / 和^运算符制作新函数,因为它们不适用于双[]变量。我知道如何制作普通的方法,比如File(),但是我在做像int.getRed()这样的事情时遇到了麻烦。这是我的加法代码 我的添加部分是正确的,我只是找不到任何让函数更“逼真”的东西,比如有人能帮我吗?一旦我弄明白这一点,我应该知道如何做其他的。非常感谢!
问题内容: 我已连接到,并且想要输入一些内容,以便它退出其中的方法。 码: 我想输入并返回主类方法。 该方法使用a 输出数据。 问题摘要:我尝试调用return;但它不会返回方法main(),我该如何解决? 问题答案: 基本上,您需要的是某种模式对话框,通过该对话框,您可以有效地在显示对话框的那一点上暂停程序的执行,直到关闭(关闭)该对话框为止,然后继续执行… 有关更多详细信息,请参见如何制作对话
我有以下dsl: 这会失败并出现以下错误 我做错了什么?我正在使用 Jenkins2.89.4 作业DSL 1.68 管道作业2.20 管道:API 2.27 管道:基本步骤2.7 管道:构建步骤2.7 管道:声明1.2.9
我正试图读取詹金斯管道中的一个文件。 为此,我在我的jenkins文件中导入的库中定义了下面的函数。 但是,我一直得到以下例外。 此外,如果我删除< code>readFile函数调用,我的jenkins管道将成功执行。 你知道这里有什么问题吗?