[OK]私は何をしようとしているのかを説明するのに適切な用語を使用することすら確信していません。とにかく、Pythonで関数呼び出しをプログラム的にまたは動的に構築できるかどうかを知りたいです。Pythonの関数呼び出しをプログラムでビルドする方法
私を説明しましょう。
私はそうのように、オプションのパラメータで定義されたクラス内の機能があります。だから、
class Agents(object):
def update(self, agent_id, full_name = "none", role = "none", status = "none"):
# do some stuff
を私はその機能を使用するために行くとき、私は、私はちょうど1つ、2つ、またはすべての3のを更新することができるときオプションのパラメータ時にはfull_nameとroleでも可能ですが、statusやstatusやroleではなくnameやstatusだけでなく、まあまあです。
私はelifステートメントの大きなブロックですべての順列を説明することができますが、それは本当に不器用な私を殴る。
は現在、私はそうのような関数を呼び出しています:an_agent = Agents()
an_agent.update(agent_id = r_agent_id)
がそれを行う前に、呼び出しの引数を追加するように、プログラムでその関数呼び出しを構築するためにとにかくあります。私はそうのような複数のシナリオを占めることができるように:とにかく
an_agent = Agents()
an_agent.update(agent_id = r_agent_id, full_name = r_full_name)
または
an_agent = Agents()
an_agent.update(agent_id = r_agent_id, full_name = r_full_name, status = r_status)
、これにアプローチする最良の方法は何ですか?
私はちょうど '**'構文は、一般的に関連付けられた単語 '** kwargs'を使ってグーグルグーグルできることを付け加えたいと思います。ここでいくつかの答えがどのように動作します:[1](http://stackoverflow.com/a/1769475/5847976)[2](http://stackoverflow.com/a/3394898/5847976)[3] (http://stackoverflow.com/a/36908/5847976) – jadsq
素晴らしいこと、私はこれを消化させ、それを行ってみましょう。私はいくつかのフォローアップの質問を持っているかもしれません。ありがとう男これは素晴らしいです! – JOG88
うん、** kwargsは確かに解決策でした。これを私の関数のいくつかに渡って実装することで、不要なif文を大量に取り除くことができました。コードは今やとても清潔です。感謝の男、答えをマーク。 – JOG88