Java のような静的バインディングを使用する言語では、すべて同じ名前でパラメーターが異なる複数の関数を定義できます。Python を学んでいて、今までこれがないことを主に「安全上の問題」と考えていました (likeは引用符のためにbool_parameter="False"
解釈される可能性がTrue
あります)。もっと気をつけないといけないなと思いました。
ここで、静的バインディングの欠如が単に不便である状況を見つけました。このタペルを検討してください:
var = ((1, "foo"), (2, "bar"), (3, "potato"))
静的バインディングを使用してアイテムを削除するには、次のvar
ようにすることができます (疑似コード:
def del_item(int i):
# search item with (x == i, *)
# remove this item
def del_item(String s):
# search item with (*, x == s)
# remove this item
実行する適切なアクションを選択するために条件が必要ないため、これは非常に便利だと思います。さらに、このコードにより、関数の 1 つまたは両方をオーバーロードすることを決定できるため、オーバーロードが容易になります。
Python でこのような状況に対処しようとすると、型をチェックする if 句のような不便な解決策しか見つかりません。
より良い方法はありますか?