シェルのような環境を作成しています。ユーザー入力を処理する私の元の方法は、関数がPythonのファーストクラスオブジェクトであるという事実を利用して、さまざまなクラスのメソッドにコマンド(文字列)をマッピングする辞書を使用することでした。
柔軟性のために(主にコマンドの解析のために)、getattr(command)を使用するようにセットアップを変更し、必要なメソッドを取得して、パーサーの最後に引数を渡すことを考えています。このアプローチのもう1つの利点は、新しいメソッド/コマンドを追加するたびに(現在静的に実装されている)コマンドディクショナリを更新する必要がないことです。
私の質問は2つあります。まず、getattrにはevalと同じ問題がありますか?第二に、シェルの効率に打撃を与えるでしょうか?私が持っているメソッド/コマンドの数は重要ですか?現在、30個のコマンドを調べていますが、最終的には2倍になる可能性があります。