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 statement更改为:
print "%s(MyClass)" % i
这只是打印:
ArgInfo(MyClass)
and so on...
答案 0 :(得分: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
块中包装。
答案 1 :(得分: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)()