我正在尝试使用inspect
获取对象上所有方法的列表。我可以获得所有成员的列表,但instance.isfunction
和inspect.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。
答案 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中没有。)