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ステートメントを次のように変更した場合:

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 に答える