dir()不会使用它的参数

时间:2015-09-21 13:02:34

标签: python list-comprehension read-eval-print-loop

我想在Python中编写一个小函数来打印Object的每个可调用方法。在REPL中我会这样做以获得每个列表方法:

[x for x in dir([]) if '__' not in x]

这在REPL中工作正常,但是当我在类似的模块中编写相同的理解时:

def methods(obj):
    return [x for x in dir(obj) if '__' not in x]

我收到错误: " TypeError:dir()不带参数(给定1个)。" 问题出在哪儿?为什么在REPL中编写它而不是在模块中写它是完全正确的?

1 个答案:

答案 0 :(得分:3)

您可能会覆盖原生dir功能。

尝试help(dir)查看其来源。

还注意到inspect完全符合您的要求:

import inspect
inspect.getmembers(obj, predicate=inspect.ismethod)