Python inspect.ismethod在空dict的方法上重新生成False

时间:2014-09-15 22:33:16

标签: python

我正在尝试使用inspect获取对象上所有方法的列表。我可以获得所有成员的列表,但instance.isfunctioninspect.ismethod只返回False

x = [f for n, f in inspect.getmembers({}) if n == 'keys'][0]
x
#> <function keys>

inspect.isfunction(x)
#> False

inspect.ismethod(x)
#> False

x()
#> []

我希望这些函数中至少有一个返回True,尤其是当我能像绑定方法一样调用 x时。这是Python 2.7.5。

1 个答案:

答案 0 :(得分:4)

这是一个builtin。引用文档:

  

如果对象是内置函数或绑定的内置方法

,则返回true

(强调我的)

如果它有帮助,它也恰好是routine ......


>>> import inspect
>>> x = [f for n, f in inspect.getmembers({}) if n == 'keys'][0]
>>> x
<built-in method keys of dict object at 0x7fd9c3027710>
>>> inspect.isbuiltin(x)
True
>>> inspect.isroutine(x)
True

请注意ismethod只包含用python编写的方法(dict.keys肯定不是 - 至少在CPython中没有。)