5

pageprocs.py というメイン アプリケーションにインポートするモジュールがあり、さまざまなコンテンツを生成して文字列で返す関数のコレクションが含まれています。pageprocs は、認証されたユーザーがさまざまなコンテンツ タイプのプラグインを作成できるようにする方法であると想定されています。

次に、文字列のリスト ['check_stats', 'build_table', 'build_ace'] を取得します。これは pageprocs のいくつかの関数の名前です。リストにある順序で関数を実行する必要があり、exec() を使用せずにこれを行う方法を見つけることができません。

for i in list_of_funcs:
    exec('pageprocs.%s()' % i)

これは私には非常に悪い考えのように思え、ユーザーコードで例外をキャッチするのは簡単ではありません. この方法でコードを実行する代わりの方法はありますか、またはユーザー定義コンテンツの生成に関する提案はありますか (状況全体に間違っている可能性があるため、これを尋ねます)。

4

1 に答える 1

11
for i in list_of_stats:
    getattr(pageprocs, i, lambda: None)()

このlambda: None部分はオプションですがAttributeError、指定された関数が存在しない場合は発生しません (匿名の何もしない関数です)。

于 2012-07-28T23:46:33.507 に答える