0
class MyClass(object):
    def fn():
        return 1

for i in [method for method in dir(inspect) if callable(getattr(inspect, method))]:
    print i(MyClass) // Error here

错误:TypeError:“str”对象不可调用

如果我将打印语句更改为:

print "%s(MyClass)" % i

这只是打印:

ArgInfo(MyClass)
and so on...
4

2 回答 2

2

dir(module)返回模块中定义的名称(字符串)列表,而不是实际的函数或值。要获得这些,请使用getattr您已经用于callable检查的 。

for name in dir(your_module):
    might_be_function = getattr(your_module, name)
    if callable(might_be_function):
        print might_be_function(your_parameters)

当然,函数可能仍然不适用于给定的参数,因此您可能需要先检查这一点,或者将其包装在一个try块中。

于 2013-06-29T12:51:22.103 回答
0

您是否需要像这样按名称调用所有方法?

class C1:
    def f1(self):
        print('f1---')
    def f2(self):
    print('f2---')

inspect = C1()
for i in [method for method in dir(inspect) if callable(getattr(inspect, method))]:
    getattr(inspect, i)()
于 2013-06-29T12:53:10.813 回答